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开发之list操作实例分析
Feb 22 Python
python中字符串类型json操作的注意事项
May 02 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
Feb 22 Python
python简单实现AES加密和解密
Mar 28 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
Jun 04 Python
python简单实现矩阵的乘,加,转置和逆运算示例
Jul 10 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
Python中*args和**kwargs的区别详解
Sep 17 Python
基于python判断目录或者文件代码实例
Nov 29 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 Python
python使用QQ邮箱实现自动发送邮件
Jun 22 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
建立动态的WML站点(三)
2006/10/09 PHP
PHP实现采集程序原理和简单示例代码
2007/03/18 PHP
基于PHP一些十分严重的缺陷详解
2013/06/03 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
浅谈JavaScript之事件绑定
2013/07/08 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
js微信扫描二维码登录网站技术原理
2016/12/01 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
小程序日历控件使用方法详解
2018/12/29 Javascript
小程序实现投票进度条
2019/11/20 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
Python ljust rjust center输出
2008/09/06 Python
Python字符串切片操作知识详解
2016/03/28 Python
python文本数据处理学习笔记详解
2019/06/17 Python
python实现俄罗斯方块小游戏
2020/04/24 Python
基于python代码批量处理图片resize
2020/06/04 Python
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
高校生生产实习自我鉴定
2013/09/21 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
村抢险救灾方案
2014/05/09 职场文书
学校周年庆活动方案
2014/08/22 职场文书
2015年度党员个人总结
2015/02/14 职场文书
答辩状格式范本
2015/05/22 职场文书
班主任培训研修日志
2015/11/13 职场文书
Python如何使用logging为Flask增加logid
2021/03/30 Python
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript
javascript之Object.assign()的痛点分析
2022/03/03 Javascript
配置Kubernetes外网访问集群
2022/03/31 Servers