python - 如何在使用 pandas DataFrame.explode() 后创建一个新的 'index' 列?

标签 python pandas list indexing explode

我正在使用 DataFrame.explode() 取消嵌套一列列表,以便每个元素都有自己的行。我想知道的是如何创建一个新的“索引”列,该列将对应于原始列表中元素的索引。在示例中,我将此列称为“周期”。

我希望在下面附上一张图片,说明我正在努力实现的目标。如果已经有关于此的页面,请分享。谢谢!

enter image description here

最佳答案

使用groupby cumcountexplode 之后:

df = df.explode('value').reset_index(drop=True)
df['cycle'] = df.groupby('sample').cumcount()  # Enumerate Groups
df = df[['sample', 'cycle', 'value']]  # Reorder columns

或使用 insert :

df = df.explode('value').reset_index(drop=True)
df.insert(1, 'cycle', df.groupby('sample').cumcount())  # Insert New Column

或使用 assign :

df = (
    df.explode('value')
        .assign(cycle=lambda x: x.groupby(level=0).cumcount())
        .reset_index(drop=True)[['sample', 'cycle', 'value']]
)

df:

   sample  cycle value
0       A      0     2
1       A      1     3
2       A      2     5
3       A      3     2
4       A      4     3
5       A      5     6
6       A      6     8
7       B      0    97
8       B      1    83
9       B      2     5
10      C      0   2.5
11      C      1     6
12      C      2     7
13      C      3     9

关于python - 如何在使用 pandas DataFrame.explode() 后创建一个新的 'index' 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67827610/

相关文章:

python - 模拟 elasticsearch-py 调用

python - Python中的方差膨胀因子

python - Tensorflow急切执行-计算顺序模型的两层之间的梯度

python - 如何摆脱 Pandasplot() 的额外图例条目?

python - 单词和字母列表到字母列表

python - 在 TensorFlow 中修改恢复的 CNN 模型的权重和偏差

python - 如何从 Pandas MultiIndex 制作 Seaborn 线图?

python - Pandas,如何重新索引通过附加多个数据帧生成的数据帧。

python - 从python中的对象列表中删除对象

list - Prolog 转换并将术语(原子)分离到列表中