熊猫-使用groupby为组中的所有记录分配最小ID

时间:2018-08-07 19:34:58

标签: python pandas

我有以下熊猫数据框:

ID Name   Mascot
0  Team 1 Cat
1  Team 2 Rabbit
2  Team 1 Cat
3  Team 3 Rat

我想在每个组中为所有记录分配最小的ID,以便能够将重复的记录与重复数据删除后保留的ID相关联。因此,我的预期输出是:

ID Name   Mascot Parent_ID
0  Team 1 Cat    0
1  Team 2 Rabbit 1
2  Team 1 Cat    0
3  Team 3 Rat    3

我尝试了以下操作,但这正在为每个组分配新的ID。

df['Parent_ID'] = pd.factorize(list(zip(df['Name'], df['Mascot'])))[0] + 1

输出为:

ID Name   Mascot Parent_ID
0  Team 1 Cat    1
1  Team 2 Rabbit 2
2  Team 1 Cat    1
3  Team 3 Rat    3

1 个答案:

答案 0 :(得分:3)

IIUC,使用transform广播

df['Parent_ID'] = df.groupby('Name').ID.transform('min')

    ID  Name    Mascot  Parent_ID
0   0   Team 1  Cat     0
1   1   Team 2  Rabbit  1
2   2   Team 1  Cat     0
3   3   Team 3  Rat     3