我有一个这样的数据框,我想创建一个名为“ 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
答案 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