【发布时间】:2019-12-24 05:18:00
【问题描述】:
我想保留至少一次满足条件的组的所有行。换句话说,我想将不满足条件的组至少删除一次。
我已经四处寻找了几个小时,但找不到解决方案。 This was the closest I got 但我无法实现答案。
我有以下数据框:
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
我原以为这可以通过组合 groupby() 和 .any() 轻松实现,而无需 lambda 函数。
我试过这个:
test.groupby("Gr").filter(lambda x: (x.Bk == 9).all())
【问题讨论】: