[英]Group by Consecutive Dates and Rank
我有一個像這樣的 dataframe,我想按條形碼創建一個名為“排名”的新列,日期條件必須是同一天或具有連續日期,並且每個條形碼必須從 go 到步驟 C。 例如,Barcode 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
您可以通過分組和使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.