每组的增量变量

时间:2019-02-27 18:47:07

标签: python pandas dataframe group-by

我有以下数据:

ID    Time
1     01-01-01
1     02-01-01
1     02-01-01
2     01-01-01

我想从0开始,并按组ID每增加一个新时间加1。所以我需要得到类似的东西

ID    Time       Result
1     01-01-01   0
1     02-01-01   1
1     02-01-01   1
2     01-01-01   0

请问有一种聪明的方法吗? (请注意,这只是为了说明,实际数据足够大。)

2 个答案:

答案 0 :(得分:4)

您可以将groupbypd.factorize一起使用:

df['Result'] = df.groupby('ID')['Time'].transform(lambda x: pd.factorize(x)[0])
df

输出:

   ID      Time  Result
0   1  01-01-01       0
1   1  02-01-01       1
2   1  02-01-01       1
3   2  01-01-01       0

答案 1 :(得分:3)

Rank在这里可以使用一个警告,它的排名从1开始。通过减去1处理它。

df['Result'] = df.groupby('ID').Time.rank('min').astype(int) - 1

    ID  Time        Rank
0   1   2001-01-01  0
1   1   2001-02-01  1
2   1   2001-02-01  1
3   2   2001-01-01  0