簡體   English   中英

在pandas groupby中找到滿足條件的組

[英]finding groups that meet a condition in pandas groupby

這是我的數據幀:

df = pd.DataFrame({'a':list('xxxyyzz'), 'b':[10,20,30,5,3,1,2]})

我把他們分組:

groups = df.groupby('a')

我想打印至少有一個b超過20的組。在這種情況下,我想打印x 這是我期望的結果:

x
   a   b
0  x  10
1  x  20
2  x  30

通過比較值Series.gt ,通過分組a柱狀Series - df['a']並使用GroupBy.transformGroupBy.any用於測試至少一個True每基團:

df1 = df[df['b'].gt(20).groupby(df['a']).transform('any')]
print (df1)
   a   b
0  x  10
1  x  20
2  x  30

您可以檢查哪些值高於20GroupBya並使用any進行transform ,以僅選擇滿足條件的至少一行的那些組:

df[df.b.gt(20).groupby(df.a).transform('any')]

   a   b
0  x  10
1  x  20
2  x  30

不需要groupby ,只是做isin

df[df.a.isin(df.loc[df.b>20,'a'])]
Out[996]: 
   a   b
0  x  10
1  x  20
2  x  30

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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