首页 >后端开发 >Python教程 >如何有效地分解 Pandas DataFrame 中类似列表的列?

如何有效地分解 Pandas DataFrame 中类似列表的列?

Barbara Streisand
Barbara Streisand原创
2024-11-27 15:44:11892浏览

How to Effectively Explode List-Like Columns in Pandas DataFrames?

爆炸类似列表的列:扩展数据框指南

问题:

在Pandas 数据框,某些单元格可能包含多个值的列表。目标是转换数据框,使每个列表元素占据单独的行,同时保留其他列中的值。

解决方案:

方法 1: Repeat()

Pandas 0.25之前,常用repeat()方法进行爆炸list columns:

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)]
    }
)

# Expand 'samples' column into separate rows using repeat()
df_exploded = df.assign(
    samples=df['samples'].str.join(',').str.split(',')
).explode('samples')

df_exploded = df_exploded.reset_index(drop=True)

# Add sample_num column to track list element order
df_exploded['sample_num'] = df_exploded.groupby('trial_num').cumcount()

方法 2:explode() (Pandas >= 0.25)

随着 Pandas 0.25 的发布,.explode() 方法提供了一个优雅的解决方案:

df.explode('samples').reset_index(drop=True)

此方法自动处理空列表并保留 NaN,确保全面转换。

注意:

  • 基于重复的方法可以处理字符串爆炸列,但需要在分隔符上进行拆分首先。
  • explode() 方法在某个位置爆炸单个列时间。
  • 分解的数据帧可能需要进一步处理以建立唯一索引并对列表元素重新编号。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn