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定时采集摄像头图像上传ftp服务器功能实现
Dec 23 Python
python实现linux服务器批量修改密码并生成execl
Apr 22 Python
Python 读取某个目录下所有的文件实例
Jun 23 Python
python读取和保存图片5种方法对比
Sep 12 Python
Python中logging实例讲解
Jan 17 Python
Python多进程方式抓取基金网站内容的方法分析
Jun 03 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
python自动化工具之pywinauto实例详解
Aug 26 Python
Python Process多进程实现过程
Oct 22 Python
MNIST数据集转化为二维图片的实现示例
Jan 10 Python
基于pytorch padding=SAME的解决方式
Feb 18 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
Feb 26 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 HTML代码串 截取实现代码
2009/06/29 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
Vue 中使用lodash对事件进行防抖和节流操作
2020/07/26 Javascript
[54:41]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VGJ.T VS paiN
2018/03/31 DOTA
python 快速排序代码
2009/11/23 Python
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
Python requests库用法实例详解
2018/08/14 Python
详解Python3中ceil()函数用法
2019/02/19 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
澳洲国民品牌乡村路折扣店:Country Road & Trenery Outlet
2018/04/19 全球购物
澳大利亚儿童鞋在线:The Trybe
2019/07/16 全球购物
Yahoo-PHP面试题1
2016/07/20 面试题
初级会计求职信范文
2014/02/15 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
初中家长意见
2015/06/03 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang
logback如何自定义日志存储
2021/08/30 Java/Android
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python
linux目录管理方法介绍
2022/06/01 Servers
js前端图片加载异常兜底方案
2022/06/21 Javascript