【问题标题】:Create a new column with unique identifier for each group为每个组创建一个具有唯一标识符的新列
【发布时间】:2021-08-24 15:54:16
【问题描述】:

我需要为两列值的每个组合创建一个新的“标识符列”,其中包含唯一值。例如,当 IDphase 相同时应该使用相同的“标识符”(例如 r1 和 ph1 [但是应该将一个新的、唯一的值添加到列中)当r1和ph2])

df
ID   phase   side   values
r1   ph1     l      12
r1   ph1     r      34
r1   ph2     l      93
s4   ph3     l      21
s3   ph2     l      88
s3   ph2     r      54
...

我需要一个像这样的新列 (idx):

new_df
ID   phase   side   values    idx
r1   ph1     l      12        1
r1   ph1     r      34        1
r1   ph2     l      93        2
s4   ph3     l      21        3
s3   ph2     l      88        4
s3   ph2     r      54        4
...

我尝试应用来自 this question 的代码,但无法实现增加 idx 中的值的方法。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    尝试使用groupby ngroup + 1,使用sort=False 以确保按照它们在DataFrame中出现的顺序枚举组:

    df['idx'] = df.groupby(['ID', 'phase'], sort=False).ngroup() + 1
    

    df:

       ID phase side  values  idx
    0  r1   ph1    l      12    1
    1  r1   ph1    r      34    1
    2  r1   ph2    l      93    2
    3  s4   ph3    l      21    3
    4  s3   ph2    l      88    4
    5  s3   ph2    r      54    4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      • 2012-03-24
      • 2021-01-12
      相关资源
      最近更新 更多