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内置函数的用法实例教程
Sep 08 Python
Python中的高级函数map/reduce使用实例
Apr 13 Python
Python 的描述符 descriptor详解
Feb 27 Python
python爬虫实战之最简单的网页爬虫教程
Aug 13 Python
Python 获取主机ip与hostname的方法
Dec 17 Python
正确理解Python中if __name__ == '__main__'
Jan 24 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
Apr 05 Python
如何使用python代码操作git代码
Feb 29 Python
python的Jenkins接口调用方式
May 12 Python
pandas创建DataFrame的7种方法小结
Jun 14 Python
python tqdm实现进度条的示例代码
Nov 10 Python
pytorch实现加载保存查看checkpoint文件
Jul 15 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中的CMS的涵义
2007/03/11 PHP
PHP编码规范之注释和文件结构说明
2010/07/09 PHP
php whois查询API制作方法
2011/06/23 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
Javascript Select操作大集合
2009/05/26 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
浅析Bootstrap组件之面板组件
2016/05/04 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
python动态性强类型用法实例
2015/05/09 Python
python基于pygame实现响应游戏中事件的方法(附源码)
2015/11/11 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
python 字符串追加实例
2019/07/20 Python
Python利用Scrapy框架爬取豆瓣电影示例
2020/01/17 Python
tensorflow 实现从checkpoint中获取graph信息
2020/02/10 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
在什么时候需要使用"常引用"
2015/12/31 面试题
小学中秋节活动方案
2014/02/06 职场文书
现场施工员岗位职责
2014/03/10 职场文书
可口可乐广告词
2014/03/20 职场文书
项目建议书
2015/02/04 职场文书
活着观后感
2015/06/03 职场文书
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang