如何合并多个数据框架

6 浏览
0 Comments

如何合并多个数据框架

我有不同的数据框,并且需要根据日期列将它们合并在一起。如果只有两个数据框,我可以使用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 等错误。

这是我编写的脚本:

dfs = [df1, df2, df3] # 数据框列表
def mergefiles(dfs, countfiles, i=0):
    if i == (countfiles - 2): # 到达倒数第二个时与最后一个合并
        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%   

0
0 Comments

在处理多个数据框的合并问题时,可以使用functools.reduce和pd.concat这两种方法。根据执行时间来看,pd.concat是最佳选择。

首先,我们导入所需的库,并将要合并的数据框存储在一个列表dfs中。假设我们需要合并的数据框为df1,df2,df3等。

接下来,我们定义一个变量nan_value,用于填充合并后可能存在的缺失值。我们将其设置为0。

第一种解决方法是使用pd.concat进行合并。我们使用pd.concat函数,将dfs作为参数传入,并指定join='outer'和axis=1。然后,我们使用fillna函数将可能的缺失值填充为nan_value。这是最快的方法,因为它直接在索引上进行合并。

第二种解决方法是使用functools.reduce和pd.merge进行合并。我们使用reduce函数和lambda表达式,将dfs中的数据框逐个合并。在合并过程中,我们使用left_index=True和right_index=True来指定按照索引进行合并,并使用how='outer'来指定外连接。最后,我们使用fillna函数填充缺失值。

然而,需要注意的是,pd.concat无法进行左连接。所以,如果想要进行左连接的话,functools.reduce是最佳选择。

通过使用pd.concat或functools.reduce,我们可以轻松地合并多个数据框。其中,pd.concat是最快的方法,并且可以在索引上进行合并。而functools.reduce可以进行左连接。根据具体需求,选择适合的方法进行合并即可。

0
0 Comments

合并多个数据框的原因是将多个数据框中的数据整合在一起,以便于进行分析和处理。解决方法是使用Pandas库中的merge函数或reduce函数来合并数据框。

首先,将需要合并的数据文件读入为数据框,并将它们存储在一个列表中。可以根据需要添加更多的数据框到列表中。

然后,使用reduce函数和merge函数来合并数据框。将merge函数作为reduce函数的参数,并指定要合并的列名和合并方式(这里使用了"outer"方法)。如果需要填充合并后数据框中不存在的值,可以使用fillna函数来填充。

最后,将合并后的数据写入CSV文件中。

需要注意的是,如果使用的是Python3,需要从functools库中导入reduce函数。

这样就可以将多个数据框合并成一个数据框,并进行进一步的处理和分析。

0
0 Comments

并且使用concat函数进行合并。如果没有相同的列,可以使用merge函数进行合并。

0