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程序中的实现及简单改进
May 04 Python
PyTorch线性回归和逻辑回归实战示例
May 22 Python
使用k8s部署Django项目的方法步骤
Jan 14 Python
python flask解析json数据不完整的解决方法
May 26 Python
opencv之为图像添加边界的方法示例
Dec 26 Python
Python 实现自动完成A4标签排版打印功能
Apr 09 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
May 27 Python
浅谈keras 的抽象后端(from keras import backend as K)
Jun 16 Python
如何使用Python自动生成报表并以邮件发送
Oct 15 Python
Python实现智慧校园自动评教全新版
Jun 18 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
Apr 08 Python
Python实现批量将文件复制到新的目录中再修改名称
Apr 12 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 结果集的分页实现代码
2009/03/10 PHP
php json_encode奇怪问题说明
2011/09/27 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
BootStrap按钮标签及基本样式
2016/11/23 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
2019/01/31 Javascript
深入探讨JavaScript的最基本部分之执行上下文
2019/02/12 Javascript
js实现简单五子棋游戏
2020/05/28 Javascript
分享Python字符串关键点
2015/12/13 Python
sublime text 3配置使用python操作方法
2017/06/11 Python
python运行其他程序的实现方法
2017/07/14 Python
pycharm: 恢复(reset) 误删文件的方法
2018/10/22 Python
Python异常处理知识点总结
2019/02/18 Python
Python3.5运算符操作实例详解
2019/04/25 Python
Python:slice与indices的用法
2019/11/25 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
初婚初育证明
2014/01/14 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
大学生实习证明
2015/06/16 职场文书
68句权威创业名言
2019/08/26 职场文书
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python
无线电知识基础入门篇
2022/02/18 无线电
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript