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运算符重载用法实例分析
Jun 01 Python
Python常用的爬虫技巧总结
Mar 28 Python
Python实现通讯录功能
Feb 22 Python
python+Splinter实现12306抢票功能
Sep 25 Python
Python中asyncio模块的深入讲解
Jun 10 Python
使用Django清空数据库并重新生成
Apr 03 Python
如何在django中运行scrapy框架
Apr 22 Python
Python 忽略文件名编码的方法
Aug 01 Python
Python爬虫防封ip的一些技巧
Aug 06 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
Dec 01 Python
python爬取新闻门户网站的示例
Apr 25 Python
Python 多线程处理任务实例
Nov 07 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
玩家交还《星际争霸》原始码光盘 暴雪报以厚礼
2017/05/05 星际争霸
简单解析PHP程序的运行流程
2016/06/23 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
IE和Firefox下event事件杂谈
2009/12/18 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
Jquery 实现弹出层插件
2015/01/28 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
浅谈jquery中next与siblings的区别
2016/10/27 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
vue中如何创建多个ueditor实例教程
2017/11/14 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
2018/09/21 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
jQuery插件实现图片轮播效果
2020/10/19 jQuery
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
python发送邮件接收邮件示例分享
2014/01/21 Python
Python写的英文字符大小写转换代码示例
2015/03/06 Python
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
python isinstance函数用法详解
2020/02/13 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
Python telnet登陆功能实现代码
2020/04/16 Python
Python二元算术运算常用方法解析
2020/09/15 Python
Pyside2中嵌入Matplotlib的绘图的实现
2021/02/22 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
技校毕业生个人学习的自我评价
2014/02/21 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
美丽的大脚观后感
2015/06/03 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android
PostgreSQL之连接失败的问题及解决
2023/05/08 PostgreSQL