如何用groupby.filter多条件过滤分组并移除不符合条件的组
使用groupby.filter筛选符合条件的位置分组
背景与需求
- 处理合并后的位置数据集,其中
merged_df[26]对应盐度字段,merged_df[23]对应温度字段 - 目标:移除所有不符合条件的
lonlat分组,仅保留存在满足「盐度≥34.0 且 温度≤-1.0」数据的位置分组,用于后续图表绘制 - 此前尝试:不按
lonlat分组直接用双条件过滤,仅会移除单条不符合数据,无法实现整组移除的需求
初始代码问题
最初使用逻辑或(|)的代码无法达到预期效果:
group1 = merged_df.groupby("lonlat").filter(lambda x: ((x[26] >= 34.0) | (x[23] <= -1.0)).any())
该代码会保留所有只要有一条数据满足「盐度≥34」或「温度≤-1」的分组,无法精准筛选出同时符合两个条件的分组,导致不符合需求的分组被保留。
修正后的解决方案
将条件中的逻辑或(|)替换为逻辑与(&),即可筛选出至少有一条数据同时满足盐度≥34.0和温度≤-1.0的分组:
group1 = merged_df.groupby("lonlat").filter(lambda x: ((x[26] >= 34.0) & (x[23] <= -1.0)).any())
内容的提问来源于stack exchange,提问作者Maria Cristina Alvarez
相关产品推荐
相关产品推荐

