按连续日期和排名分组

时间:2020-10-08 18:26:39

标签: python pandas date

我有一个这样的数据框,我想创建一个名为“ Rank”(按条形码)分组的新列,并且带有日期条件的日期必须是同一天或具有连续日期,并且每个条形码必须转到步骤C。例如,条形码B具有相同的日期,但是由于它再次进入步骤C,因此其等级应为2。等级不限于(1,2),它应为1,2,3,4,依此类推。日期

Date           Barcode         Step       Value
--------------------------------------------------
2014-03-04      A               C             2
2014-03-04      A               D             4
2014-03-05      A               E             3
2014-03-06      A               F             4
2014-03-08      A               C             3
2014-03-08      A               D             2 
2014-03-04      B               C             5
2014-03-04      B               D             6
2014-03-05      B               E             7  
2014-03-06      B               F             8
2014-03-06      B               C             9
Date           Barcode         Step       Value          Rank
---------------------------------------------------------------
2014-03-04      A               C             2          1
2014-03-04      A               D             4          1
2014-03-05      A               E             3          1
2014-03-06      A               F             4          1
2014-03-08      A               C             3          2
2014-03-08      A               D             2          2
2014-03-04      B               C             5          1
2014-03-04      B               D             6          1
2014-03-05      B               E             7          1
2014-03-06      B               F             8          1
2014-03-06      B               C             9          2

1 个答案:

答案 0 :(得分:0)

您可以通过分组并使用cumcount()

来完成此操作
df = df.sort_values(['Barcode', 'Date'])
df['Rank'] = df.groupby(['Barcode', 'Step']).cumcount() + 1
df

给你:

Date     Barcode    Step    Value   Rank
2014-03-04  A   C   2   1
2014-03-04  A   D   4   1
2014-03-05  A   E   3   1
2014-03-06  A   F   4   1
2014-03-08  A   C   3   2
2014-03-08  A   D   2   2
2014-03-04  B   C   5   1
2014-03-04  B   D   6   1
2014-03-05  B   E   7   1
2014-03-06  B   F   8   1
2014-03-06  B   C   9   2