[英]Pandas select rows when column value within range from another row column value with group filter
[英]Pandas: filter the row according to the value of another column in different group (two columns in aggregate)
我在熊貓數據框中有一個如下所示的數據集:
Name Shift Data Type
Peter 0 12 A
Peter 0 13 A
Peter 0 14 B
Sam 1 12 A
Sam 1 15 A
Sam 1 16 B
Sam 1 17 B
Mary 2 20 A
Mary 2 21 A
Mary 2 12 A
有人可以建議如何顯示如下最終結果嗎? (邏輯是:如果shift為0,選擇groupby“Name”和“type”列下的第一個項目;如果shift為1,選擇groupby“Name”和“type”列下的第二個值,等等......我已經想到了 nth(x) 但我不知道在這種情況下如何在 x 上放置變量。其他解決方法很好,可以生成相同的結果。謝謝。
Name Shift Data Type
Peter 0 12 A
Peter 0 14 B
Sam 1 15 A
Sam 1 17 B
Mary 2 12 A
您可以使用groupby.cumcount()
假設您的數據位於名為df
的 DataFrame 中,我認為這應該對您有用:
df = df[df.groupby(['Name','Type']).cumcount()==df['Shift']]
它將具有相同名稱和類型的行的累積計數與 Shift 列中的值進行比較,以確定應保留哪些行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.