我想保留至少一次满足条件的组的所有行。换句话说,我想将不满足条件的组至少丢弃一次。
我已经四处寻找了几个小时,但找不到解决方案。这是我得到的最接近的结果,但我无法实现答案。
我有以下数据框:
test = pd.DataFrame({"Gr":[1,1,2,2],"Bk":[9,1,8,5]})
print(test)
Gr Bk
0 1 9
1 1 1
2 2 8
3 2 5
我想分组test["Gr"]并选择test["Bk"] == 9至少一次达到此目的的所有组:
# Drop Gr 2 because they didn't meet Bk == 1 in any of its rows.
Gr Bk
0 1 9
1 1 1
我原以为这可以通过组合而不需要 lambda 函数轻松groupby()实现.any()。
我试过这个:
test.groupby("Gr").filter(lambda x: (x.Bk == 9).all())