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

Pandas如何基于其他列值相等判断动态创建DataFrame布尔列

实现方法

pandas原生支持向量化列运算,不需要编写逐行循环就能快速实现需求,天然适配动态传入列名的场景,执行效率远高于apply等逐行遍历写法。

最简实现(固定列名场景)

直接对两列做相等逻辑判断,将判断结果赋值给新列即可,代码如下:

import pandas as pd
# 构造示例DataFrame
df = pd.DataFrame({"column_1":[1,2,3,4,5], "column_2":[1,3,2,4,5]})
# 新增布尔列判断两列值是否相等
df["columns_equal"] = df["column_1"] == df["column_2"]

执行后输出结果和预期完全一致:

column_1  column_2  columns_equal
0         1         1           True
1         2         3          False
2         3         2          False
3         4         4           True
4         5         5           True

动态传列名场景

如果需要比较的列名不是固定写死,而是通过变量动态传入,直接用列名变量索引列做判断即可,不需要修改核心逻辑:

# 动态指定要比较的列名、生成的新列名
compare_col1 = "column_1"
compare_col2 = "column_2"
new_col_name = "columns_equal"

df[new_col_name] = df[compare_col1] == df[compare_col2]

空值兼容说明

如果参与比较的列中存在NaN空值,原生==逻辑会判定两个NaN不相等,如果需要将「两列同时为空」的场景也判定为相等,可以用如下写法:

df[new_col_name] = (df[compare_col1] == df[compare_col2]) | (df[compare_col1].isna() & df[compare_col2].isna())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.07 16:15:42