Pandas DataFrame.ne对比None返回False的高亮差异方案咨询
问题解决方法
Pandas 内置的 ne() 方法遵循 Python 原生相等性判断逻辑:None == None 会返回 True,因此你调用 ne() 判定两个 None 为相等值、返回 False,这和你需要的判定规则不符。
你可以自定义对比掩码,在原有 ne() 的结果基础上,额外加上「两个对比位置均为空值」的判定条件即可,修改后的代码如下:
def highlight_diff(data, color='yellow'): attr = f'background-color: {color}' other = data.xs('Original', axis='columns', level=-1) # 自定义不相等判定规则:原始ne规则 + 双方均为空值的情况 diff_mask = data.ne(other, level=0) | (data.isna() & other.isna()) return pd.DataFrame(np.where(diff_mask, attr, ''), index=data.index, columns=data.columns)
这个方案同时兼容 None 和 NaN 两种空值场景,两种空值成对出现时都会被判定为不相等、标记对应颜色。
内容的提问来源于stack exchange,提问作者Abhijith Rao
相关产品推荐
相关产品推荐

