Python中实现一行拆多行和多行并一行的示例代码


Posted in Python onSeptember 06, 2020

粉丝提问

今天粉丝提了下面这样一个问题,其中一个是"一行拆多行",另外一个是"多行并一行",貌似群友用power query已经解决了。但是基于Python怎么做呢?接着往下看。

Python中实现一行拆多行和多行并一行的示例代码

一行拆多行

上面这个问题我会提供两个思路,供大家选择,当然肯定是越简单得越好。每一种方法中都有一些好用的技巧,希望大家能够好好学习。

1)方法一

下方代码中有很多重要的知识点,需要我们下去好好学习一下,我这里只提供解体思路,关于每个知识点怎么用,希望大家下去自行研究学习。

  • Pandas.melt()函数的用法;
  • Series.str.split("/",expand=True)中,expand=True参数的用法;
  • Series.sort_values()对文本进行排序;
  • Python中enumerate()函数的用法;
import pandas as pd
# 读取数据
df = pd.read_excel("test1.xlsx",sheet_name="Sheet1")
# 将一列炸裂成多列
df[["类型1","类型2","类型3"]] = df["电影类型"].str.split("/",expand=True)
# 选取想要的列
df_final = df[["电影名","类型1","类型2","类型3"]]
# 将行专列
df_final = df_final.melt(id_vars=["电影名"],value_name="类型")
# 对“电影名”字段进行排序
df_final = df_final[["电影名","类型"]]
df_final.sort_values(by="电影名",inplace=True)
# 删除“类型==None”的行
for index,value in enumerate(df_final["类型"]):
  if value == None:
    df_final.drop(df_final.index[index],inplace=True)
df_final

结果如下:

Python中实现一行拆多行和多行并一行的示例代码

2)方法二

上述方法确实感觉复杂了,但是没办法,我之前的Pandas版本只有0.23.4,因此无法用explode()方法,进行炸裂操作。在pandas0.25版本的时候, DataFrame中才新增了一个explode方法, 专门用来将一行变多行。

Pandas.explode()函数的用法;

import pandas as pd
# 读取数据
df = pd.read_excel("test1.xlsx",sheet_name="Sheet1")
# 将一行拆分成列表形式,注意:这里不需要使用expand=True参数
df["type"] = df["电影类型"].str.split("/")
# 直接炸裂指定列
df.explode("type")

结果如下:

Python中实现一行拆多行和多行并一行的示例代码

多行并一行

这里没有使用什么特别的知识,好好理解Pandas中分组聚合应用某个函数,即可轻松解决这个问题。

import pandas as pd
# 读取数据
df = pd.read_excel("test1.xlsx",sheet_name="Sheet2")
# 分组聚合,应用某个函数
def func(df):
  return ','.join(df.values)
df = df.groupby(by='电影名').agg(func).reset_index()
df

结果如下:

Python中实现一行拆多行和多行并一行的示例代码

到此这篇关于Python中实现一行拆多行和多行并一行的示例代码的文章就介绍到这了,更多相关Python 一行拆多行和多行并一行内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现的一个火车票转让信息采集器
Jul 09 Python
详解Python的Django框架中Manager方法的使用
Jul 21 Python
通过Python 接口使用OpenCV的方法
Apr 02 Python
Python wxPython库Core组件BoxSizer用法示例
Sep 03 Python
python网络应用开发知识点浅析
May 28 Python
程序员的七夕用30行代码让Python化身表白神器
Aug 07 Python
Python迭代器iterator生成器generator使用解析
Oct 24 Python
python selenium自动化测试框架搭建的方法步骤
Jun 14 Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 Python
PyQt5的QWebEngineView使用示例
Oct 20 Python
python中的None与NULL用法说明
May 25 Python
python数字图像处理数据类型及颜色空间转换
Jun 28 Python
Pytest单元测试框架如何实现参数化
Sep 05 #Python
Python实例方法、类方法、静态方法区别详解
Sep 05 #Python
Python装饰器如何实现修复过程解析
Sep 05 #Python
Python JSON常用编解码方法代码实例
Sep 05 #Python
Python直接赋值及深浅拷贝原理详解
Sep 05 #Python
Python数据库封装实现代码示例解析
Sep 05 #Python
Python‘==‘ 及 ‘is‘相关原理解析
Sep 05 #Python
You might like
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
2013/08/07 PHP
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
JS调用CS里的带参方法实例
2013/08/01 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
图片旋转、鼠标滚轮缩放、镜像、切换图片js代码
2020/12/13 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
jQuery添加options点击事件并传值实例代码
2016/05/18 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
vue实现购物车抛物线小球动画效果的方法详解
2019/02/13 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
Js实现粘贴上传图片的原理及示例
2020/12/09 Javascript
python 回调函数和回调方法的实现分析
2016/03/23 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
Python进阶之全面解读高级特性之切片
2019/02/19 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
门卫岗位职责说明书
2014/08/18 职场文书
小学教师节活动总结
2015/03/20 职场文书
2015年八一建军节慰问信
2015/03/23 职场文书
2015年教师师德师风承诺书
2015/04/28 职场文书
小学语文课《掌声》教学反思
2016/03/03 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书