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

Pandas如何检测DataFrame两列对角相等值并新增布尔标识列

实现方案

直接用numpy的循环移位函数就能实现,逻辑不依赖固定行数、不需要硬编码索引,后续行数增减、行顺序调整都能自动适配。

核心逻辑

你描述的对角匹配是循环斜向匹配规则:对于n行的两列数据,第i行的Column_1值,需要和第(i+1) % n行的Column_2值做相等判断(3行场景下i=2时刚好对应第0行,和你给出的column_1[2].eq(column_2[0])示例完全一致)。
np.roll可以直接实现数组的循环移位,将Column_2整体左移1位(shift=-1),原首行的值会自动补到移位后的末行位置,移位后的数组每个位置i的值,刚好就是原数组(i+1) % n位置的值,直接和Column_1做等值判断即可得到布尔列。

实现代码

先确保依赖导入:

import pandas as pd
import numpy as np

添加Diagonal列只需要一行通用代码,所有场景通用:

df['Diagonal'] = df['Column_1'] == np.roll(df['Column_2'], shift=-1)
# 用eq写法效果完全一致
# df['Diagonal'] = df['Column_1'].eq(np.roll(df['Column_2'], shift=-1))

测试验证

用你提供的三组样例测试:

  1. df1测试结果
    data1={'Column_1':['BR','BR','AC'],'Column_2':['AC','LF','LF']}
    df1=pd.DataFrame(data1)
    df1['Diagonal'] = df1['Column_1'].eq(np.roll(df1['Column_2'], shift=-1))
    print(df1)
    
    输出:
    Column_1 Column_2  Diagonal
    0       BR       AC     False
    1       BR       LF     False
    2       AC       LF      True
    
    第三行返回True,完全匹配你给出的示例规则。
  2. df2测试结果
    data2={'Column_1':['BR','AC','BR'],'Column_2':['AC','LF','LF']}
    df2=pd.DataFrame(data2)
    df2['Diagonal'] = df2['Column_1'].eq(np.roll(df2['Column_2'], shift=-1))
    print(df2)
    
    输出:
    Column_1 Column_2  Diagonal
    0       BR       AC     False
    1       AC       LF     False
    2       BR       LF     False
    
  3. df3测试结果
    data3={'Column_1':['AC','BR','BR'],'Column_2':['LF','LF','AC']}
    df3=pd.DataFrame(data3)
    df3['Diagonal'] = df3['Column_1'].eq(np.roll(df3['Column_2'], shift=-1))
    print(df3)
    
    输出:
    Column_1 Column_2  Diagonal
    0       AC       LF     False
    1       BR       LF     False
    2       BR       AC     False
    

扩展性说明

不管后续把DataFrame扩展到4行、10行还是更多行,或是对行做排序、打乱、新增/删除操作,只要重新运行上述赋值代码,就会自动基于当前的行数和行顺序计算结果,不需要调整任何参数。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:09:20