Python Pandas删除列异常及合并去重列的技术问题
解决多DataFrame合并后重复col1列及索引异常问题
方法一:合并前预处理(推荐)
合并前只保留其中一个DataFrame的col1列,其余DataFrame先删除该列再合并,从根源避免重复:
import pandas as pd # 假设你的多个DataFrame存储在列表dfs中 dfs = [df_a, df_b, df_c] # 保留第一个DataFrame的col1,其余DataFrame删除col1列 processed_dfs = [dfs[0]] + [df.drop('col1', axis=1) for df in dfs[1:]] # 执行合并 merged_df = pd.concat(processed_dfs, axis=1) # 设置单值索引 merged_df.set_index('col1', inplace=True)
方法二:合并后清理重复列
如果已经完成合并,可通过列名去重保留首次出现的col1:
merged_df = pd.concat(dfs, axis=1) # 仅保留每列名第一次出现的列,自动去除后续重复的col1 merged_df_clean = merged_df.loc[:, ~merged_df.columns.duplicated()] # 设置正常单值索引 merged_df_clean.set_index('col1', inplace=True)
原有方法失效的原因
- 直接用
df.drop('col1', axis=1)会匹配所有列名为col1的列,导致全部删除; - 调用
set_index('col1')时,由于存在多列同名的col1,pandas会将这些列的对应值组合成元组作为索引。
内容的提问来源于stack exchange,提问作者four-eyes
相关产品推荐
相关产品推荐

