我有以下熊猫数据框:
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
答案 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