首页 > 后端开发 > Python教程 > 如何有效地解除 Pandas DataFrame 中多个列表列的嵌套?

如何有效地解除 Pandas DataFrame 中多个列表列的嵌套?

Susan Sarandon
发布: 2024-11-17 20:58:02
原创
551 人浏览过

How to Efficiently Unnest Multiple List Columns in a Pandas DataFrame?

如何有效地解除(爆炸)pandas DataFrame 中的多个列表列

问题:在大型数据集中爆炸嵌套列表列

处理时pandas DataFrames,有时需要将包含列表的列“取消嵌套”或“分解”为多行。然而,这可能是一个计算成本很高的操作,尤其是对于大型数据集。

解决方案:使用 pandas >= 1.3

对于 pandas 1.3 及更高版本,有一个内置函数称为DataFrame.explode 允许您同时取消嵌套多个列。此函数要求所有列表列具有相同的长度。使用方法:

df.explode(['B', 'C', 'D', 'E']).reset_index(drop=True)
登录后复制

熊猫的解决方案

1.3

对于旧版本的 pandas,需要稍微复杂一点的方法:
  1. 将 DataFrame 的索引设置为不应分解的列。
  2. 对每一列进行分解。
  3. 重置索引以获得未嵌套的DataFrame。
df.set_index(['A']).apply(pd.Series.explode).reset_index()
登录后复制

效率考虑

两种方法提供高效的解决方案,set_index和explode比DataFrame.explode稍快。下表显示了性能比较:
Method Time (seconds)
DataFrame.explode 0.00259
Set index and explode 0.00127
Stacking approach 0.120

关于重复问题的注意事项

虽然这个问题最初被标记为重复,但它特别强调需要一种可以处理大型问题的有效方法数据集。重复问题的答案未能充分满足此要求。

以上是如何有效地解除 Pandas DataFrame 中多个列表列的嵌套?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板