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执行get提交的方法
Apr 29 Python
Python检测网站链接是否已存在
Apr 07 Python
python+opencv实现的简单人脸识别代码示例
Nov 14 Python
python3+PyQt5泛型委托详解
Apr 24 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
python 多线程重启方法
Feb 18 Python
Django自带日志 settings.py文件配置方法
Aug 30 Python
python 如何去除字符串头尾的多余符号
Nov 19 Python
Python读取csv文件实例解析
Dec 30 Python
Python使用turtle库绘制小猪佩奇(实例代码)
Jan 16 Python
Python语言编写智力问答小游戏功能
Oct 13 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 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
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
PHP 5.0对象模型深度探索之绑定
2006/09/05 PHP
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
Jquery动态添加及删除页面节点元素示例代码
2014/06/16 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
使用python解析xml成对应的html示例分享
2014/04/02 Python
python selenium自动上传有赞单号的操作方法
2018/07/05 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
详解pandas赋值失败问题解决
2020/11/29 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
社会发展项目建议书
2014/08/25 职场文书
生产操作工岗位职责
2014/09/16 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
2015年保送生自荐信
2015/03/24 职场文书
清明祭英烈活动总结
2015/05/11 职场文书
感恩教育观后感
2015/06/17 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技