Python/Pandas多层索引数据集筛选:保留SetValue列21与22值不同的行
实现方案
对于你当前的二级列索引透视表,直接通过元组定位多级列、构造布尔索引即可完成筛选:
# 保留EquipmentID=21和22的SetValue列值不相等的行 filtered_df = resultaat[resultaat[('SetValue', 21)] != resultaat[('SetValue', 22)]]
- 多级列的定位规则为
(第一层索引值, 第二层索引值),('SetValue', 21)即对应EquipmentID为21的SetValue列,('SetValue', 22)对应EquipmentID为22的SetValue列 - 对两个列做不等比较得到布尔序列,传入DataFrame的中括号索引即可过滤出符合条件的行
如果需要额外排除两个列存在空值的行,可以使用扩展的筛选条件:
filtered_df = resultaat[ (resultaat[('SetValue', 21)] != resultaat[('SetValue', 22)]) & resultaat[('SetValue', 21)].notna() & resultaat[('SetValue', 22)].notna() ]
内容的提问来源于stack exchange,提问作者Marvy
相关产品推荐
相关产品推荐

