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中copy()方法的使用
May 21 Python
Python中条件判断语句的简单使用方法
Aug 21 Python
Python实现的十进制小数与二进制小数相互转换功能
Oct 12 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
python递归函数绘制分形树的方法
Jun 22 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
Aug 23 Python
python多继承(钻石继承)问题和解决方法简单示例
Oct 21 Python
python实现LRU热点缓存及原理
Oct 29 Python
Python 模拟生成动态产生验证码图片的方法
Feb 01 Python
Python多线程的退出控制实现
Aug 10 Python
termux中matplotlib无法显示中文问题的解决方法
Jan 11 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
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
基于mysql的论坛(1)
2006/10/09 PHP
php时间不正确的解决方法
2008/04/09 PHP
解决File size limit exceeded 错误的方法
2013/06/14 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
javascript parseInt 大改造
2009/09/27 Javascript
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
2016/11/06 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
vue.js获得当前元素的文字信息方法
2018/03/09 Javascript
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
2020/07/27 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
python中使用PIL制作并验证图片验证码
2018/03/15 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
Java模拟试题
2014/11/10 面试题
海南地接欢迎词
2014/01/14 职场文书
小学英语教学反思
2014/01/30 职场文书
策划创业计划书
2014/02/06 职场文书
安全生产计划书
2014/05/04 职场文书
绿色出行口号
2014/06/18 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
Java spring定时任务详解
2021/10/05 Java/Android