You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对比dataframe中取值相反的两列并完成校验及可视化?

两列相反校验与可视化方案

校验方法

直接通过pandas逐行对比即可,支持布尔、字符串T/F、正负数值等多种相反场景:

import pandas as pd

# 构造样例数据
df = pd.DataFrame({
    'Col1': ['T', 'F', 'T', 'T'],
    'Col2': ['F', 'T', 'F', 'F']
})

# 场景1:取值为字符串T/F/布尔值,判断两列不等即为相反
df['is_reverse'] = df['Col1'] != df['Col2']
# 场景2:取值为数值,判断为正负相反,可修改为 df['is_reverse'] = df['Col1'] == -df['Col2']

# 全局校验两列是否完全相反
all_reverse = df['is_reverse'].all()
print(f"两列是否完全相反:{all_reverse}")

# 筛选出不满足相反规则的异常行
abnormal_rows = df[~df['is_reverse']]
print("异常行数据:\n", abnormal_rows)

可视化方法

用混淆矩阵热力图可以直观展示两列的取值匹配情况,完全相反的情况下只有两种交叉取值有计数:

import seaborn as sns
import matplotlib.pyplot as plt

# 生成两列取值的交叉计数表
cross_tab = pd.crosstab(df['Col1'], df['Col2'])

# 绘制热力图
plt.figure(figsize=(6, 4))
sns.heatmap(cross_tab, annot=True, fmt='d', cmap='Blues')
plt.title('Col1与Col2取值分布对比')
plt.xlabel('Col2')
plt.ylabel('Col1')
plt.show()

运行后如果热力图中仅Col1=T & Col2=F、Col1=F & Col2=T两个单元格有数值,其余单元格为0,即可确认两列完全相反。

内容的提问来源于stack exchange,提问作者user16971617

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:24:00