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发送邮件附件以定时备份MySQL的教程
Apr 25 Python
win系统下为Python3.5安装flask-mongoengine 库
Dec 20 Python
python字符串string的内置方法实例详解
May 14 Python
pygame游戏之旅 添加键盘按键的方法
Nov 20 Python
python代码 输入数字使其反向输出的方法
Dec 22 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
Jul 03 Python
python实现键盘输入的实操方法
Jul 16 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
Aug 05 Python
python解释器spython使用及原理解析
Aug 24 Python
Django继承自带user表并重写的例子
Nov 18 Python
pytorch中的卷积和池化计算方式详解
Jan 03 Python
浅析Python3 pip换源问题
Jan 06 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中的字符串函数
2006/10/09 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
javascript中window.event事件用法详解
2012/12/11 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
Python实现字符串逆序输出功能示例
2017/06/24 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
Python调用.NET库的方法步骤
2019/12/27 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
python将音频进行变速的操作方法
2020/04/08 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
Python与C/C++的相互调用案例
2021/03/04 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
如何处理简单的PHP错误
2015/10/14 面试题
用C或者C++语言实现SOCKET通信
2015/02/24 面试题
经贸日语专业个人求职信范文
2013/12/28 职场文书
助理政工师申报材料
2014/06/03 职场文书
2014年自愿离婚协议书范本
2014/09/25 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
入党心得体会
2019/06/20 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers