我有一个 Pandas 数据框 (df),我必须在其中为重复的行(即具有相似值的行)生成序列号。例如,以下是我的 df:

P_Id    Time_Point     Date
B001    0           2015-07-22
B001    0           2015-07-22
B001    0           2015-07-22
B001    0           2015-07-22
B001    0           2015-07-22
B001    3           2015-10-01
B001    3           2015-10-01
B001    3           2015-10-01
B001    3           2015-10-01
B001    3           2015-10-01
B001    12          2016-08-01
B001    12          2016-08-01
B001    12          2016-08-01
B001    12          2016-08-01
B001    12          2016-08-01

现在,如果您看到相同 id (001) 的重复行,具有相似的时间点和相似的日期。我想要另一列,其中每个模式都有一个序列号。生成的 df 应如下所示:
P_Id    Time_Point     Date        Seq
B001    0           2015-07-22      1
B001    0           2015-07-22      2
B001    0           2015-07-22      3
B001    0           2015-07-22      4
B001    0           2015-07-22      5
B001    3           2015-10-01      1
B001    3           2015-10-01      2
B001    3           2015-10-01      3
B001    3           2015-10-01      4
B001    12          2016-08-01      1
B001    12          2016-08-01      2
B001    12          2016-08-01      3

最佳答案

groupby GroupBy.cumcount add 标量 1 一起使用:

df['Seq'] = df.groupby(['P_Id','Time_Point','Date']).cumcount().add(1)
print (df)
    P_Id  Time_Point        Date  Seq
0   B001           0  2015-07-22    1
1   B001           0  2015-07-22    2
2   B001           0  2015-07-22    3
3   B001           0  2015-07-22    4
4   B001           0  2015-07-22    5
5   B001           3  2015-10-01    1
6   B001           3  2015-10-01    2
7   B001           3  2015-10-01    3
8   B001           3  2015-10-01    4
9   B001           3  2015-10-01    5
10  B001          12  2016-08-01    1
11  B001          12  2016-08-01    2
12  B001          12  2016-08-01    3
13  B001          12  2016-08-01    4
14  B001          12  2016-08-01    5

关于python - 如何为重复行生成序列号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48843882/

10-13 02:07