Python / Pandas:按筛选条件的数据框子集

时间:2018-01-23 19:47:10

标签: python pandas dataframe filter

我有以下数据框,这是比赛和结果列表。

      Date       R   #   Fin  Win
0     11182017   1   1   2     0 
1     11182017   1   2   1     5   
2     11182017   1   3   3     0   
3     11182017   2   1   2     0   
4     11182017   2   2   1     10   
5     11182017   3   1   1     6    
6     11182017   3   2   2     0   

我想只返回Win列大于或等于10的种族(所有参赛者不仅仅是10行)

      Date       R   #   Fin  Win
3     11182017   2   1   2     0   
4     11182017   2   2   1     10   

1 个答案:

答案 0 :(得分:2)

您可以使用groupby + filter

df.groupby(['Date','R']).filter(lambda x : (x['Win']>=10).any())
Out[568]: 
       Date  R  #  Fin  Win
3  11182017  2  1    2    0
4  11182017  2  2    1   10

使用transform

的另一种解决方案
df[df.groupby(['Date','R']).Win.transform(lambda x : (x>=10).any())]
Out[573]: 
       Date  R  #  Fin  Win
3  11182017  2  1    2    0
4  11182017  2  2    1   10