pandas 如何按多个条件筛选组

iqjalb3h  于 2023-04-10  发布在  其他
关注(0)|答案(1)|浏览(190)

我正在尝试使用groupby.filter删除所有不符合条件的组
我的数据集由不同的位置数据合并成一个,盐度:merged_df[26]和温度:merged_df[23]

group1 =merged_df.groupby("lonlat").filter(lambda x:  ((x[26] >= 34.0) | (x[23] <= -1.0)).any())

因此,如果组中包含的行中的值满足条件,我希望返回一个新的 Dataframe ,而不带这些组(删除该组的所有行)
此行不删除不满足条件的组
我们的目标是能够制作出像下面这样的图,只有满足条件的值。如果温度低于-1.0或盐度值大于34,我希望能够识别这些组并绘制它们。因此最终的图应该删除所有值高于-1.0的位置(lonlat)

在执行此操作之前,我尝试只根据两个条件进行过滤,而不考虑位置,但这只会删除不满足条件的点,而不会删除整个组(lonlat)

解决方案:将条件从OR更改为AND

group1 =merged_df.groupby("lonlat").filter(lambda x:  ((x[26] >= 34.0) & (x[23] <= -1.0)).any())

nuypyhwy

nuypyhwy1#

IIUC中,需要对每组中filter计算的 * 标量bool* 求反。

group1 = (merged_df.groupby("lonlat").filter(
             lambda x: not ((x[26] >= 34.0) | (x[23] <= -1.0)).any())
         ) # add this --^

更新:

基于下面的元素,您需要使用(&)而不是(|)。

相关问题