首页 > 解决方案 > Pandas:根据另一列中的索引列表添加一列来自其他列的值列表

问题描述

这是原始数据框,其中 group 包含每个人所属的 group 的索引值列表。

        Name           Group
0       Bob            [0, 1]
1       April          [0, 1]
2       Amy            [2, 3]
3       Linda          [2, 3]      

这就是我想要的,我想为每个组创建名称值列表,并通过 df 与组列表值的索引映射将它们添加回 df

        Name           Group          Group_Name
0       Bob            [0, 1]         [Bob, April]       
1       April          [0, 1]         [Bob, April]
2       Amy            [2, 3]         [Amy, Linda]
3       Linda          [2, 3]         [Amy, Linda]

我尝试使用 for 循环创建名称列表并根据索引映射将它们附加回 df,但由于数据大小,它真的很慢。

如果您有更好的想法,请告知,并提前感谢!

标签: pythonpandas

解决方案


让我们使用

s=df.Group.map(tuple)
df['Group_Name']=df.groupby(df.Group.map(tuple)).Name.agg(list).reindex(s).values
df
    Name   Group    Group_Name
0    Bob  [0, 1]  [Bob, April]
1  April  [0, 1]  [Bob, April]
2    Amy  [2, 3]  [Amy, Linda]
3  Linda  [2, 3]  [Amy, Linda]

推荐阅读