我正在尝试使用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())
1条答案
按热度按时间nuypyhwy1#
IIUC中,需要对每组中
filter
计算的 * 标量bool* 求反。更新:
基于下面的元素,您需要使用(
&
)而不是(|
)。