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

如何在Pandas中先校验前序对应列相等后仅比较G0与G1列?

Pandas 按条件比较指定列

给定如下DataFrame:

A0   B0   C0   D0   E0   F0  G0   A1   B1   C1   D1   E1   F1  G1  label
0  1.3  2.4  1.5  2.0  2.0  3.2   5  1.3  2.4  1.5  2.0  2.0  3.2   5   True
1  1.3  2.4  1.5  2.0  2.0  3.2   7  1.3  2.4  1.5  2.0  2.0  3.2   5  False
2  1.3  2.4  1.5  2.0  2.0  3.2   7  1.3  2.4  1.5  2.0  2.0  3.2   7   True
3  1.3  2.4  1.5  2.0  2.0  3.2   6  1.3  2.4  1.5  2.0  2.0  3.2   6   True
4  1.3  2.4  1.5  2.0  2.0  3.2   5  1.3  2.4  1.5  2.0  2.0  3.2   6  False

需求是:先确保A0与A1、B0与B1、C0与C1、D0与D1、E0与E1、F0与F1全部相等,再比较G0和G1是否相等,得到最终匹配结果。

实现步骤

  1. 生成前缀列匹配掩码:筛选出所有前缀列(A-F)对应相等的行
  2. 结合G列比较结果:在前缀列匹配的基础上,判断G0与G1是否相等

代码实现

import pandas as pd

# 假设你的DataFrame已定义为df
prefixes = ['A', 'B', 'C', 'D', 'E', 'F']

# 生成前缀列全部相等的掩码
mask_prefix_equal = df[[f'{p}0' for p in prefixes]].eq(df[[f'{p}1' for p in prefixes]]).all(axis=1)

# 计算最终结果:前缀列全部相等 且 G0=G1
df['result'] = mask_prefix_equal & (df['G0'] == df['G1'])

# 查看结果与原label列的对比
print(df[['label', 'result']])

代码说明

  • df[[f'{p}0'...]].eq(df[[f'{p}1'...]]):逐列比较前缀为0和1的对应列,生成布尔值DataFrame
  • .all(axis=1):按行判断当前行所有前缀列是否都匹配(即所有比较结果为True)
  • 用逻辑与&结合两个条件,得到同时满足前缀列匹配、G列匹配的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:15:37