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实现八大排序算法(2)
Sep 14 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
Jan 23 Python
Python 使用Numpy对矩阵进行转置的方法
Jan 28 Python
Python os.access()用法实例
Feb 18 Python
Python发展简史 Python来历
May 14 Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 Python
Python openpyxl 插入折线图实例
Apr 17 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
May 22 Python
python实现逻辑回归的示例
Oct 09 Python
python opencv角点检测连线功能的实现代码
Nov 24 Python
python如何读取.mtx文件
Apr 22 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
2.PHP入门
2006/10/09 PHP
php 文件缓存函数
2011/10/08 PHP
PHP面向对象概念
2011/11/06 PHP
CI框架中site_url()和base_url()的区别
2015/01/07 PHP
PHP5.3新特性小结
2016/02/14 PHP
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
Nodejs实现用户注册功能
2019/04/14 NodeJs
手把手教你 CKEDITOR 4 扩展插件制作
2019/06/18 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
JS实现简易日历效果
2021/01/25 Javascript
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
pyv8学习python和javascript变量进行交互
2013/12/04 Python
Python操作json数据的一个简单例子
2014/04/17 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
Python实现的简单计算器功能详解
2018/08/25 Python
浅谈Pytorch中的torch.gather函数的含义
2019/08/18 Python
python 逆向爬虫正确调用 JAR 加密逻辑
2021/01/12 Python
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
北美最大的参茸药食商城:德成行
2020/12/06 全球购物
会计顶岗实习心得
2014/01/25 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
《观舞记》教学反思
2014/04/16 职场文书
2015年工商所工作总结
2015/05/21 职场文书
甲午大海战观后感
2015/06/02 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js