如何在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是否相等,得到最终匹配结果。
实现步骤
- 生成前缀列匹配掩码:筛选出所有前缀列(A-F)对应相等的行
- 结合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
相关产品推荐
相关产品推荐

