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 23 Python
Python中装饰器学习总结
Feb 10 Python
Python3实现购物车功能
Apr 18 Python
python+numpy+matplotalib实现梯度下降法
Aug 31 Python
树莓派+摄像头实现对移动物体的检测
Jun 22 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
在django中自定义字段Field详解
Dec 03 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
keras 多gpu并行运行案例
Jun 10 Python
Python return语句如何实现结果返回调用
Oct 15 Python
python3中calendar返回某一时间点实例讲解
Nov 18 Python
TensorFlow的环境配置与安装方法
Feb 20 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将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
PHP批量检测并去除文件BOM头代码实例
2014/05/08 PHP
PHP实现上传多文件示例代码
2017/02/20 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
给文字加上着重号的JS代码
2013/11/12 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
深入探讨前端框架react
2015/12/09 Javascript
jQuery实现下拉加载功能实例代码
2016/04/01 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
基于hover的用法实例(推荐)
2017/07/04 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
Vue中img的src是动态渲染时不显示的解决
2019/11/14 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
详解JavaScript 作用域
2020/07/14 Javascript
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
把vgg-face.mat权重迁移到pytorch模型示例
2019/12/27 Python
Python如何使用内置库matplotlib绘制折线图
2020/02/24 Python
Python统计文本词汇出现次数的实例代码
2020/02/27 Python
keras输出预测值和真实值方式
2020/06/27 Python
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
高校辅导员推荐信范文
2013/12/25 职场文书
大学活动策划书范文
2014/01/10 职场文书
捐款倡议书
2014/04/14 职场文书
主题实践活动总结
2014/05/08 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
从贫穷到富有,是知识技能和学习力的差别
2019/08/20 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
MySQL基础(一)
2021/04/05 MySQL
python基础学习之递归函数知识总结
2021/05/26 Python
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android