我希望至少保留一次满足条件的组的所有行。换句话说,我想至少删除一次不满足条件的组。你知道吗
我四处找了几个小时,找不到解决办法。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())
使用
GroupBy.transform
和eq.any
在每组内检查any
值是否等于(eq
)到9
:输出
没有groupby是有可能的。只需检查所有条目是否等于9,获取该条目的组,并为提取的组切片整个数据帧。你知道吗
结果
易于理解
filter
相关问题 更多 >
编程相关推荐