iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中Dataframe元素为不定长list时的拆分分组
  • 645
分享到

Python中Dataframe元素为不定长list时的拆分分组

Python 官方文档:入门教程 => 点击学习

摘要

目录引言解决方法总结引言 本文想要解决的问题是当DataFrame中某一列元素为不定长度的数组时,该如何对它们进行拆分分解为后续元素,从而进行进一步的提取操作,数据格式见下图: 解

引言

本文想要解决的问题是当DataFrame中某一列元素为不定长度的数组时,该如何对它们进行拆分分解为后续元素,从而进行进一步的提取操作,数据格式见下图:

在这里插入图片描述

解决方法

 这个问题的解决思路首先是要不定长的数组填充成等长的数组,从而后续可以直接转换为元素为单一值的标准DataFrame,再和原DataFrame合并即可完成操作。填充的部分使用了map()方法来实现,实现前还需要获得数组的最大长度以确定填充数目。代码见下:

a=[[['a','d'],['b'],['a','c']],[1,2,3],[4,5,6]]
df=pd.DataFrame(a).T
used_col=df[0]
length=used_col.map(lambda x:len(x))
max_l=length.max()
temp=used_col.map(lambda x:x+[np.nan]*(max_l-len(x)))
temp=np.array(temp.to_list())
temp=pd.DataFrame(temp)
df=df.drop(0,axis=1)
temp.columns=['cat1','cat2']
output=df.join(temp)

结果展示:

pd.DataFrame(a).T
Out[13]: 
        0  1  2
0  [a, d]  1  4
1     [b]  2  5
2  [a, c]  3  6
output
Out[14]: 
   1  2 cat1 cat2
0  1  4    a    d
1  2  5    b  nan
2  3  6    a    c

总结

笔者解决这个问题的关键思路就是将元素为不定长list的一列取出来作为新的DataFrame,但没有找到好的办法实现长度不够自动补齐,无奈使用map()函数手动补齐。这个问题其实不是笔者遇到的,只是在问答区回答别人提问时花了点时间解决了一下,再加上最后没有被题主所采纳感觉很可惜,就发出来和大家分析一下自己的解法,可能会略显粗糙。

到此这篇关于python中Dataframe元素为不定长list时的拆分分组的文章就介绍到这了,更多相关Dataframe元素为不定长list拆分内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python中Dataframe元素为不定长list时的拆分分组

本文链接: https://www.lsjlt.com/news/199245.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作