如何基于索引合并多个以Date为索引的DataFrame列表?
基于索引合并多个DataFrame的解决方案
你原来的reduce写法参数顺序有误,导致无法批量合并列表里的DataFrame,修正后就能一次性完成合并;另外还有更简洁的pd.concat方案可选,两种方法如下:
方案一:修正reduce的写法
调整pd.merge的参数顺序,将待合并的两个DataFrame(left和right)放在最前面,再指定索引相关参数:
from functools import reduce import pandas as pd final_df = reduce(lambda left, right: pd.merge(left, right, left_index=True, right_index=True, how='inner'), data_frames)
方案二:用pd.concat更简洁实现
因为所有DataFrame都以Date为索引,直接用concat配合join='inner'就能按索引内连接合并,代码更简洁:
import pandas as pd final_df = pd.concat(data_frames, axis=1, join='inner')
注:如果DataFrame存在重复列名,
concat会自动给列名添加后缀区分;若需要保留原列名,提前处理列名唯一性后再合并即可。
内容的提问来源于stack exchange,提问作者Samir112
相关产品推荐
相关产品推荐

