Pandas DataFrame移除重复列且保留对应行值的技术问题
处理Pandas重复列名并合并行数值
核心方法
按列名分组,对同名列的行数据进行聚合合并,而非直接删除后续重复列。
场景1:同列名的行仅单个非空值(补全缺失)
如果重复列的同一行里只有一列有有效数值,其余为缺失值,用groupby按列名分组后取首个非空值即可完成补全:
df_merged = df.groupby(df.columns, axis=1).first()
这会将同列名的所有列合并,用后续列的非空值填补首个列的对应空行,保留全部有效数据。
场景2:同列名的行存在多个有效值(合并所有值)
如果需要把同一行的所有有效值合并,可自定义聚合逻辑:
- 字符串拼接(逗号分隔非空值):
df_merged = df.groupby(df.columns, axis=1).agg(lambda x: ','.join(x.dropna().astype(str)))
- 数值求和:
df_merged = df.groupby(df.columns, axis=1).sum()
原代码问题说明
你之前使用的df.loc[:,~df.columns.duplicated(keep='first')]仅筛选保留第一个出现的列,直接丢弃了后续重复列的所有数据,没有做数值合并,因此会丢失信息。
内容的提问来源于stack exchange,提问作者jellobeann
相关产品推荐
相关产品推荐

