如何合并DataFrame中同名重复列并保留有效值?
合并同名列并保留有效值的实现方案
针对你描述的拥有两个同名column1列、每行仅含一个有效值的DataFrame,可以用以下几种简洁的方法实现合并:
方法一:利用方向填充(推荐)
通过bfill或ffill沿行方向填充空值,再提取单列即可,效率较高:
import pandas as pd # 构造匹配场景的示例数据 df = pd.DataFrame({ 'column1': [None, None, None, None, 'value2'], 'column1': ['value1', 'value1', 'value1', 'value1', None] }) # 合并列:向后填充空值后取第一列,转为目标DataFrame df_merged = df.bfill(axis=1).iloc[:, 0].to_frame('column1') # 也可使用向前填充,效果完全一致:df.ffill(axis=1).iloc[:, 0].to_frame('column1') print(df_merged)
原理:每行仅有一个有效值,方向填充后该行所有列都会被这个有效值覆盖,提取任意一列即可得到目标结果。
方法二:逐行提取非空值
通过apply对每行操作,筛选出非空值并提取:
df_merged = df.apply(lambda row: row.dropna().iloc[0], axis=1).to_frame('column1')
原理:对每行删除空值后,剩下的唯一值就是该行的有效值,将其转为单列DataFrame。
内容的提问来源于stack exchange,提问作者kwsong0314
相关产品推荐
相关产品推荐

