Python Pandas list列表数据列拆分成多行的方法实现


Posted in Python onDecember 14, 2020

1、实现的效果

示例代码:

df=pd.DataFrame({'A':[1,2],'B':[[1,2],[1,2]]})
df
Out[458]: 
  A    B
0 1 [1, 2]
1 2 [1, 2]

拆分成多行的效果:

   A  B
0  1  1
1  1  2
3  2  1
4  2  2

2、拆分成多行的方法

1)通过apply和pd.Series实现

容易理解,但在性能方面不推荐。

df.set_index('A').B.apply(pd.Series).stack().reset_index(level=0).rename(columns={0:'B'})
Out[463]: 
  A B
0 1 1
1 1 2
0 2 1
1 2 2

2)使用repeat和DataFrame构造函数

性能可以,但不太适合多列

df=pd.DataFrame({'A':df.A.repeat(df.B.str.len()),'B':np.concatenate(df.B.values)})
df
Out[465]: 
  A B
0 1 1
0 1 2
1 2 1
1 2 2

或者

s=pd.DataFrame({'B':np.concatenate(df.B.values)},index=df.index.repeat(df.B.str.len()))
s.join(df.drop('B',1),how='left')
Out[477]: 
  B A
0 1 1
0 2 1
1 1 2
1 2 2

3)创建新的列表

pd.DataFrame([[x] + [z] for x, y in df.values for z in y],columns=df.columns)
Out[488]: 
  A B
0 1 1
1 1 2
2 2 1
3 2 2

或者

#拆成多于两列的情况
s=pd.DataFrame([[x] + [z] for x, y in zip(df.index,df.B) for z in y])
s.merge(df,left_on=0,right_index=True)
Out[491]: 
  0 1 A    B
0 0 1 1 [1, 2]
1 0 2 1 [1, 2]
2 1 1 2 [1, 2]
3 1 2 2 [1, 2]

4)使用reindex和loc实现

df.reindex(df.index.repeat(df.B.str.len())).assign(B=np.concatenate(df.B.values))
Out[554]: 
  A B
0 1 1
0 1 2
1 2 1
1 2 2
#df.loc[df.index.repeat(df.B.str.len())].assign(B=np.concatenate(df.B.values)

5)使用numpy高性能实现

newvalues=np.dstack((np.repeat(df.A.values,list(map(len,df.B.values))),np.concatenate(df.B.values)))
pd.DataFrame(data=newvalues[0],columns=df.columns)
  A B
0 1 1
1 1 2
2 2 1
3 2 2

到此这篇关于Python Pandas list列表数据列拆分成多行的方法实现的文章就介绍到这了,更多相关Pandas list列拆分成多行内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中dictionary items()系列函数的用法实例
Aug 21 Python
Python fileinput模块使用介绍
Nov 30 Python
以windows service方式运行Python程序的方法
Jun 03 Python
Python实现提取谷歌音乐搜索结果的方法
Jul 10 Python
Python3如何解决字符编码问题详解
Apr 23 Python
django反向解析URL和URL命名空间的方法
Jun 05 Python
Python中的元组介绍
Jan 28 Python
Python循环结构的应用场景详解
Jul 11 Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 Python
python常用数据重复项处理方法
Nov 22 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
wxPython修改文本框颜色过程解析
Feb 14 Python
pandas将list数据拆分成行或列的实现
Dec 13 #Python
pandas按照列的值排序(某一列或者多列)
Dec 13 #Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 #Python
pandas抽取行列数据的几种方法
Dec 13 #Python
python3.9实现pyinstaller打包python文件成exe
Dec 13 #Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 #Python
使用pandas实现筛选出指定列值所对应的行
Dec 13 #Python
You might like
PHP中redis的用法深入解析
2014/02/20 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
PHP数据库处理封装类实例
2016/12/24 PHP
使用GruntJS构建Web程序之构建篇
2014/06/04 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
js获取ip和地区
2017/03/10 Javascript
微信小程序 引入es6 promise
2017/04/12 Javascript
原生js中ajax访问的实例详解
2017/09/19 Javascript
layer弹出层父子页面事件相互调用方法
2018/08/17 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
深入理解Javascript中的this关键字
2015/03/27 Python
Python线程指南详细介绍
2017/01/05 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
2018/10/30 Python
win7 x64系统中安装Scrapy的方法
2018/11/18 Python
python爬虫之自制英汉字典
2019/06/24 Python
Python中拆分字符串的操作方法
2019/07/23 Python
pyqt5 QlistView列表显示的实现示例
2020/03/24 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
智能室内花园:Click & Grow
2021/01/29 全球购物
团支书竞选演讲稿
2014/04/28 职场文书
师德师风演讲稿
2014/05/05 职场文书
物理课外活动总结
2014/08/27 职场文书
党员组织生活会发言材料
2014/10/17 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
企业承诺书格式范文
2015/04/28 职场文书