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中关于时间和日期函数的常用计算总结(time和datatime)
Mar 08 Python
Python collections模块实例讲解
Apr 07 Python
pycharm 使用心得(二)设置字体大小
Jun 05 Python
通过代码实例展示Python中列表生成式的用法
Mar 31 Python
Python中使用bidict模块双向字典结构的奇技淫巧
Jul 12 Python
python字符串中的单双引
Feb 16 Python
Python中多个数组行合并及列合并的方法总结
Apr 12 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
Apr 19 Python
python3实现基于用户的协同过滤
May 31 Python
Django Rest framework之认证的实现代码
Dec 17 Python
Python实现网页截图(PyQT5)过程解析
Aug 12 Python
使用python创建生成动态链接库dll的方法
May 09 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学习笔记之面向对象
2014/11/08 PHP
php生成短域名函数
2015/03/23 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
php ajax异步读取rss文档数据
2016/03/29 PHP
PHP删除数组中指定下标的元素方法
2018/02/03 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
基于jQuery的360图片展示实现代码
2012/06/14 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
vue2滚动条加载更多数据实现代码
2017/01/10 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
深入理解react 组件类型及使用场景
2019/03/07 Javascript
python根据路径导入模块的方法
2014/09/30 Python
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
Python字符串转换成浮点数函数分享
2015/07/24 Python
关于python的list相关知识(推荐)
2017/08/30 Python
解决pycharm无法调用pip安装的包问题
2018/05/18 Python
python实现一个简单的ping工具方法
2019/01/31 Python
python实现实时视频流播放代码实例
2020/01/11 Python
python pymysql库的常用操作
2020/10/16 Python
关键字throw与throws的用法差异
2016/11/22 面试题
服装厂厂长职责
2013/12/16 职场文书
网络信息管理员岗位职责
2014/01/05 职场文书
微笑服务演讲稿
2014/05/13 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
爸爸的三轮车观后感
2015/06/16 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
会计主管竞聘书
2015/09/15 职场文书
使用HttpSessionListener监听器实战
2022/03/17 Java/Android
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android
如何基于python实现单目三维重建详解
2022/06/25 Python