簡體   English   中英

Pandas:根據不同組中另一列的值過濾行(合計兩列)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM