首页 > 解决方案 > 按日期添加两个大小不同的数据框

问题描述

我有两个需要添加在一起的数据框。

这两个数据框可能如下所示:

df1 =

    date       col1    col2
    01-01-20   1       2
    02-01-20   2       4
    03-01-20   3       6
    04-01-20   4       8
    05-01-20   5       10

df2 =

    date       col1    col2
    03-01-20   1       2
    04-01-20   2       4
    05-01-20   3       6

现在,我目前正在做的只是:

df_sum = df1.set_index("date") + df2.set_index("date")

返回:

df_sum =

    01-01-20   NaN     NaN
    02-01-20   NaN     NaN
    03-01-20   4       8
    04-01-20   6       12
    05-01-20   8       16

但我想要的是:

df_sum_correct =

    01-01-20   1       2
    02-01-20   2       4
    03-01-20   4       8
    04-01-20   6       12
    05-01-20   8       16

因此,不是转换日期不相等的行,而是保留实际具有该日期值的数据框中的值,而不是将日期不相等的行中的所有值转换为NaN.

如何才能做到这一点 ?

标签: pythonpandas

解决方案


DataFrame.addfill_value参数一起使用:

df_sum = df1.set_index("date").add(df2.set_index("date"), fill_value=0)

concat使用聚合sum

df_sum = pd.concat([df1, df2]).groupby("date").sum()

推荐阅读