如何基于共享列合并Pandas数据帧字典
解决Pandas合并多数据帧时重复共享列的问题
你的问题核心是直接按列拼接时,每个数据帧都包含的character列会被重复保留,要得到期望的结果,不需要额外重置索引(除非后续调整格式),但需要先对齐共享列再合并,下面是两种简单可行的方案:
方案1:基于索引对齐的concat改进
先将每个数据帧的character列设为索引,这样按列拼接时会自动对齐索引,不会重复生成character列,最后再将索引还原为普通列即可:
import pandas as pd # 预处理每个数据帧,把character设为索引 processed_dfs = [df.set_index('character') for df in sega_df_dict.values()] # 按列合并,join='inner'确保只保留所有数据帧都有的ROI sega_final_df = pd.concat(processed_dfs, axis=1, join='inner').reset_index()
方案2:基于merge的逐次合并
以第一个数据帧为基础,逐个与其他数据帧基于character列进行内连接,这种方式天然只会保留一份character列:
import pandas as pd # 取出字典中第一个数据帧作为合并起点 sega_final_df = next(iter(sega_df_dict.values())) # 遍历剩余数据帧,逐个执行内连接 for df in list(sega_df_dict.values())[1:]: sega_final_df = sega_final_df.merge(df, on='character', how='inner')
两种方案都能得到你期望的结果,其中方案1在数据量较大时效率更高,方案2逻辑更直观,适合理解合并过程。
内容的提问来源于stack exchange,提问作者florence-y
相关产品推荐
相关产品推荐

