首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python: pandas合并多个数据帧

Python: pandas合并多个数据帧
EN

Stack Overflow用户
提问于 2017-06-02 19:38:06
回答 7查看 244.5K关注 0票数 125

我有不同的数据帧,需要根据日期列将它们合并在一起。如果我只有两个数据帧,我可以使用df1.merge(df2, on='date')来处理三个数据帧,我使用df1.merge(df2.merge(df3, on='date'), on='date'),但是使用多个数据帧会变得非常复杂和不可读。

所有数据帧都有一个共同的列-date,但它们的行数和列数都不相同,我只需要那些每个日期对每个数据帧都相同的行。

因此,我正在尝试编写一个递归函数,它返回一个包含所有数据的数据帧,但它不起作用。那么我应该如何合并多个数据帧呢?

我尝试了不同的方法,得到了像out of rangekeyerror 0/1/2/3can not merge DataFrame with instance of type <class 'NoneType'>这样的错误。

这是我写的脚本:

dfs = [df1, df2, df3] # list of dataframes

def mergefiles(dfs, countfiles, i=0):
    if i == (countfiles - 2): # it gets to the second to last and merges it with the last
        return

    dfm = dfs[i].merge(mergefiles(dfs[i+1], countfiles, i=i+1), on='date')
    return dfm

print(mergefiles(dfs, len(dfs)))

例如: df_1:

May 19, 2017;1,200.00;0.1%
May 18, 2017;1,100.00;0.1%
May 17, 2017;1,000.00;0.1%
May 15, 2017;1,901.00;0.1%

df_2:

May 20, 2017;2,200.00;1000000;0.2%
May 18, 2017;2,100.00;1590000;0.2%
May 16, 2017;2,000.00;1230000;0.2%
May 15, 2017;2,902.00;1000000;0.2%

df_3:

May 21, 2017;3,200.00;2000000;0.3%
May 17, 2017;3,100.00;2590000;0.3%
May 16, 2017;3,000.00;2230000;0.3%
May 15, 2017;3,903.00;2000000;0.3%

预期的合并结果:

May 15, 2017;  1,901.00;0.1%;  2,902.00;1000000;0.2%;   3,903.00;2000000;0.3%   
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44327999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档