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使用tkinter实现简单计算器
Jan 30 Python
一份python入门应该看的学习资料
Apr 11 Python
python flask搭建web应用教程
Nov 19 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
python数据爬下来保存的位置
Feb 17 Python
Python3.7下安装pyqt5的方法步骤(图文)
May 12 Python
Python同时迭代多个序列的方法
Jul 28 Python
Django实现微信小程序支付的示例代码
Sep 03 Python
获取CSDN文章内容并转换为markdown文本的python
Sep 06 Python
python实现感知机模型的示例
Sep 30 Python
Python中相见恨晚的技巧
Apr 13 Python
Python机器学习应用之工业蒸汽数据分析篇详解
Jan 18 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
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
2014/12/17 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
Bootstrap CSS组件之按钮下拉菜单
2016/12/17 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
微信小程序如何利用getCurrentPages进行页面传值
2019/07/01 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
2020/10/29 Javascript
用python实现的去除win下文本文件头部BOM的代码
2013/02/10 Python
Django添加feeds功能的示例
2018/08/07 Python
解决python 自动安装缺少模块的问题
2018/10/22 Python
python实现嵌套列表平铺的两种方法
2018/11/08 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
Python实现FLV视频拼接功能
2020/01/21 Python
Python中return函数返回值实例用法
2020/11/19 Python
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
Linux不知道文件后缀名怎么判断文件类型
2012/04/26 面试题
护士自我鉴定
2013/10/23 职场文书
优秀毕业大学生推荐信
2013/11/13 职场文书
商务日语毕业生自荐信范文
2013/11/14 职场文书
业务代表的岗位职责
2013/11/16 职场文书
岗位职责的构建方法
2014/02/01 职场文书
乡镇领导班子四风对照检查材料
2014/09/27 职场文书
写给医院的感谢信
2015/01/22 职场文书
前台接待员岗位职责
2015/04/15 职场文书
工作时间证明
2015/06/15 职场文书
python基础之错误和异常处理
2021/10/24 Python
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL