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

如何合并pandas DataFrame中两个列名相同的b列

解决方法

方法1:通用方案(适配任意数量重名b列)

对于多个重名的b列,直接选中所有b列后按行执行逻辑或运算,对于0/1值来说和按位或运算结果完全一致,不需要单独选中每一列:

# 所有重名b列按行求或,转为int匹配原数据类型
merged_b = df['b'].any(axis=1).astype(int)
# 拼接非重名列与合并后的b列,调整列顺序
res = pd.concat([df.drop(columns='b'), merged_b.rename('b')], axis=1)[['a','b','c']]

输出结果:

a  b  c
0  1  1  0
1  0  1  1
2  1  0  1

方法2:按位置选中单列后合并

如果需要单独选中某一个重名b列,使用iloc按列的位置索引取值即可,示例里两个b列的位置索引分别是1和2:

# 按位置取两个b列
b_col1 = df.iloc[:, 1]
b_col2 = df.iloc[:, 2]
# 按位或合并
merged_b = b_col1 | b_col2
# 后续拼接逻辑同上
res = pd.concat([df.drop(columns='b'), merged_b.rename('b')], axis=1)[['a','b','c']]

补充说明

你尝试的df['b']['b']无法选中单列是pandas的正常逻辑:当你用列名索引重名列时,会返回所有匹配该名称的列组成的DataFrame,这个返回结果的列名依然全是b,所以重复用['b']索引永远会返回所有重名列,无法筛选出单列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:15:03