首页 > 后端开发 > Python教程 > 如何将 Pandas DataFrame 中的嵌套列表扩展为单独的行?

如何将 Pandas DataFrame 中的嵌套列表扩展为单独的行?

Linda Hamilton
发布: 2024-12-17 02:38:25
原创
567 人浏览过

How Can I Expand Nested Lists in Pandas DataFrames into Separate Rows?

解开 Pandas DataFrame 中的嵌套列表:行扩展

在 Pandas DataFrame 中处理数据时,您可能会遇到包含列表的列,这些列可能跨越多个值。为了便于分析和操作,有必要将这些列表转换为单独的行。这个过程被称为“长形成”或“行扩展”,允许每个列表元素占据自己的行。

为了实现这一点,Pandas 提供了一个名为 .explode() 的专用方法,0.25版本中引入。此方法将指定的包含列表的列无缝转换为一系列行,每个元素成为一个独立的行。

实现:

使用 .explode() 方法,只需指定要展开的列名称即可。默认情况下,它将为列中的每个元素创建新行,同时保留所有其他列中的值。

例如,考虑一个包含“样本”列和值列表的数据框:

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {'trial_num': [1, 2, 3, 1, 2, 3],
     'subject': [1, 1, 1, 2, 2, 2],
     'samples': [list(np.random.randn(3).round(2)) for i in range(6)]
    }
)
登录后复制

应用 .explode()方法:

df.explode('samples')
登录后复制

产生以下数据帧:

   subject  trial_num  sample
0        1          1    0.57
1        1          1   -0.83
2        1          1    1.44
3        1          2   -0.01
4        1          2    1.13
5        1          2    0.36
6        2          1   -0.08
7        2          1   -4.22
8        2          1   -2.05
9        2          2    0.72
10       2          2    0.79
11       2          2    0.53
登录后复制

正如您所观察到的,每个列表元素现在都有自己的行。值得注意的是,虽然该方法有效地展开列表,但它一次只针对单个列进行展开。

其他注意事项:

  • .explode() 方法处理包含列表和标量值的混合列,确保空列表和 NaN 值
  • 如果数据框有多个包含列表的列,您可以使用嵌套的 .explode() 调用将它们一一展开。
  • 如果您如果需要特定的列顺序,可以在调用后手动重新调整列顺序.explode().
  • 建议使用 .reset_index(drop=True) 重置索引以获得常规整数索引。

以上是如何将 Pandas DataFrame 中的嵌套列表扩展为单独的行?的详细内容。更多信息请关注PHP中文网其他相关文章!

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