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 client使用http post 到server端的代码
Feb 10 Python
python实现socket端口重定向示例
Feb 10 Python
python调用新浪微博API项目实践
Jul 28 Python
python查询mysql中文乱码问题
Nov 09 Python
探究Python中isalnum()方法的使用
May 18 Python
浅谈Python中copy()方法的使用
May 21 Python
Python实现的爬虫功能代码
Jun 24 Python
浅谈Python traceback的优雅处理
Aug 31 Python
对python中的装包与解包实例详解
Aug 24 Python
解决Python logging模块无法正常输出日志的问题
Feb 21 Python
python mysql中in参数化说明
Jun 05 Python
django序列化时使用外键的真实值操作
Jul 15 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安全性漫谈
2012/06/28 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
详解PHP的Yii框架的运行机制及其路由功能
2016/03/17 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
获取数组中最大最小值方法js代码(自写)
2013/08/12 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
微信小程序 九宫格实例代码
2017/01/21 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
python文件写入实例分析
2015/04/08 Python
python实现识别相似图片小结
2016/02/22 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
2017/05/25 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
python 多个参数不为空校验方法
2019/02/14 Python
python导入坐标点的具体操作
2019/05/10 Python
python对Excel按条件进行内容补充(推荐)
2019/11/24 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
解决Python import .pyd 可能遇到路径的问题
2021/03/04 Python
香港通票:Hong Kong Pass
2019/02/26 全球购物
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
大学生求职工作的自我评价
2014/02/13 职场文书
房屋转让协议书
2014/10/18 职场文书
培训通知
2015/04/17 职场文书
乒乓球比赛通知
2015/04/27 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
因个人工作失误检讨书
2019/06/21 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL
Go语言 详解net的tcp服务
2022/04/14 Golang
Linux服务器离线安装 nginx的详细步骤
2022/06/16 Servers