Python/Pandas:按筛选条件的数据帧子集
我有下面的数据框,它是比赛和结果的列表Python/Pandas:按筛选条件的数据帧子集,python,pandas,dataframe,filter,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
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
您可以使用
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
使用变换的另一种解决方案
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
Wen,TY的快速反应…你能解释一下代码的机制吗?df.groupby(['Date','R']).filter(lambda x:(x['Win']>=10.any())@Derek it group by Date and R,为组内所有赢项查找不小于10的任何值,如果其中任何一项匹配,保留全部,否则删除it@Derek如果这是你所需要的,你能考虑接受吗?