合并两个具有相似值但日期熊猫不同的不同数据框

时间:2020-07-08 17:26:13

标签: python pandas dataframe datetime

我有两个看起来像这样的数据框:

df1
Date    ScoreMean 06 Jul
0   2020-07-06  6.818316
1   2020-07-07  7.644018
2   2020-07-08  9.076809
3   2020-07-09  8.409158
4   2020-07-10  6.788774
5   2020-07-11  7.302806
6   2020-07-12  7.051699
7   2020-07-13  7.485968
8   2020-07-14  7.759232
9   2020-07-15  7.908419
10  2020-07-16  8.316100
11  2020-07-17  8.830133
12  2020-07-18  8.310192
13  2020-07-19  8.135894

df2
Date    ScoreMean 08 Jul
0   2020-07-08  7.844904
1   2020-07-09  6.565731
2   2020-07-10  6.791728
3   2020-07-11  6.706056
4   2020-07-12  6.545052
5   2020-07-13  7.163959
6   2020-07-14  8.199409
7   2020-07-15  8.115214
8   2020-07-16  8.234860
9   2020-07-17  8.370753
10  2020-07-18  8.036928
11  2020-07-19  7.927622
12  2020-07-20  7.890694
13  2020-07-21  7.989660

我尝试了pd.merge(df1, df2, on="Date"),但这会产生:

    Date    ScoreMean 06 Jul    ScoreMean 08 Jul
0   2020-07-08  9.076809    7.844904
1   2020-07-09  8.409158    6.565731
2   2020-07-10  6.788774    6.791728
3   2020-07-11  7.302806    6.706056
4   2020-07-12  7.051699    6.545052
5   2020-07-13  7.485968    7.163959
6   2020-07-14  7.759232    8.199409
7   2020-07-15  7.908419    8.115214
8   2020-07-16  8.316100    8.234860
9   2020-07-17  8.830133    8.370753
10  2020-07-18  8.310192    8.036928
11  2020-07-19  8.135894    7.927622

但是,我想要的是日期的尾端与相关数据一起显示在新数据框中。例如,在这种情况下,新数据框的顶部应包含2020-07-06和2020-07-07,底部应包含2020-07-20和2020-07-21。在日期不重叠的日子里,我希望该值为NaN或零。我将如何使用熊猫来做到这一点?

2 个答案:

答案 0 :(得分:1)

使用mergehow参数设置为"outer"

pd.merge(df1, df2, on="Date", how="outer")

要了解how的用法,请阅读有关types of SQL joins的信息。

答案 1 :(得分:1)

您在这里:

df1.merge(df2, on='Date', how='outer')                                  

输出:

          Date  ScoreMean 06 Jul  ScoreMean 08 Jul
0   2020-07-06               6.8               NaN
1   2020-07-07               7.6               NaN
2   2020-07-08               9.1               7.8
3   2020-07-09               8.4               6.6
4   2020-07-10               6.8               6.8
5   2020-07-11               7.3               6.7
6   2020-07-12               7.1               6.5
7   2020-07-13               7.5               7.2
8   2020-07-14               7.8               8.2
9   2020-07-15               7.9               8.1
10  2020-07-16               8.3               8.2
11  2020-07-17               8.8               8.4
12  2020-07-18               8.3               8.0
13  2020-07-19               8.1               7.9
14  2020-07-20               NaN               7.9
15  2020-07-21               NaN               8.0