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

Python中Pandas DataFrame逐行检查相邻列值是否相等并新增列实现方法

实现DataFrame逐行相邻列等值校验的方法

核心实现逻辑

我们可以通过列移位对比的方式实现需求,该方法同时兼容数值、字符串等多种可比较数据类型,不需要逐行循环,执行效率高。

完整代码示例

初始化示例DataFrame(原有参考代码)

import itertools as it
import pandas as pd

x_list = list(set(it.permutations([1,1,0,0])))
x_df =  pd.DataFrame(x_list)
x_df.columns = ['one', 'two', 'three', 'four']

新增校验结果列

# 方法1:仅适用于数值类型,通过行差分判断(代码更简洁)
# 新列值为True代表该行存在相邻列取值相等,False代表不存在
x_df['has_adjacent_equal'] = x_df.diff(axis=1).eq(0).any(axis=1)

# 方法2:兼容所有可比较数据类型,通过列移位对比(适用范围更广)
x_df['has_adjacent_equal'] = x_df.eq(x_df.shift(axis=1), axis=0).iloc[:,1:].any(axis=1)

# 若需要统计每行相邻相等的列对数量,把上述代码的any改为sum即可
x_df['adjacent_equal_count'] = x_df.diff(axis=1).eq(0).sum(axis=1)

逻辑说明

  • 差分方法:diff(axis=1)会按行计算后一列减前一列的差值,差值为0即代表两列取值相等,再通过any(axis=1)逐行判断是否存在符合条件的列对。
  • 移位方法:shift(axis=1)会将所有列向右平移一位,第一列填充为NaN,和原DataFrame逐元素对比后,去掉无意义的第一列对比结果,再逐行判断即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:57:03