使用pandas合并DataFrame中两个同名Col_1列为单列的实现方法
pandas重名列合并实现方案
你可以通过按位置取重名列+combine_first非空值填充的方式实现需求,完整代码如下:
import pandas as pd import numpy as np # 第一步:如果你的空值是空字符串,先替换为NaN方便合并处理,如果本身是NaN可跳过这步 df = df.replace('', np.nan) # 第二步:按位置取两个重名Col_1列,用第二个列的非空值补全第一个列的空值 df['Col_1'] = df.iloc[:, 0].combine_first(df.iloc[:, 2]) # 第三步:删除原始两个重复Col_1列,调整列顺序为你需要的格式 df = df.drop(df.columns[[0, 2]], axis=1)[['Col_1', 'Col_2', 'Col3']] # 可选:如果需要把空值还原为空字符串,执行这步 df = df.fillna('')
原有写法错误原因
- 第一种写法:
df.columns[0]返回的是字符串Col_1,不是DataFrame对象,pd.merge是用于拼接两个数据集的API,不支持单列合并操作,逻辑完全不匹配。 - 第二种写法:直接对两个
Col_1列做字符串拼接,会把两列取值直接相加,而非取非空值合并,得到的结果会是类似nanA4这类不符合预期的内容。
内容的提问来源于stack exchange,提问作者disukumo
相关产品推荐
相关产品推荐

