python pandas 合并_Python:pandas合并多个数据怎么办?

我有不同的数据文件,需要根据日期列将它们合并在一起。如果我只有两个文件,我可以用df1.merge(df2, on='date'),如果我尝试使用三个文件,我会使用df1.merge(df2.merge(df3, on='date'), on='date'),但是有多个文件要合并。

dataframes有一个共同的列-“Date”,但是没有相同数量的行或列,我只需要每个dataframe共有的日期。

因此,我试图编写一个递归函数,它返回一个包含所有数据的dataframe,但是它没有工作。 代码如下:

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)))

一个例子:文件_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;900.00;0.2%

档案_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;1,900.00;1000000;0.2%

档案_3:May 21, 2017;3,200.00;2000000;0.2%

May 17, 2017;3,100.00;2590000;0.2%

May 16, 2017;3,000.00;2230000;0.2%

May 15,2017;2,900.00;2000000;0.2%

预期合并结果:May 15,2017;2,900.00;2000000;0.2%

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值