【问题标题】:Pandas - use groupby to assign the minimum ID to all records in group [duplicate]Pandas - 使用 groupby 为组中的所有记录分配最小 ID [重复]
【发布时间】:2018-08-07 19:34:57
【问题描述】:

我有以下 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

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-03
      • 2018-10-07
      • 2016-07-03
      • 2020-01-19
      • 1970-01-01
      • 2021-03-09
      • 2019-08-26
      • 2017-12-18
      相关资源
      最近更新 更多