合并 2 个日期不相等的年、月、日、小时数据框

Merge 2 Dataframes with Unequal Dates of Year, Month, Day, Hour

我一直在寻找如何合并两个日期不相等的数据框。每个日期列都是年、月、日、时列中的整数数据类型。假设 df1 看起来像这样:

    site    data1    year   month   day   hour
0   A       5.4      2018   01      01    0
1   A       5.1      2018   01      01    1
2   A       3.7      2021   01      01    0
3   A       6.4      2021   01      01    1
4   A       7.5      2021   01      01    2
5   A       3.9      2021   02      01    0

df2 看起来像这样:

    site    data2    year   month   day   hour
0   A       3.9      2021   01      01    0
1   A       6.0      2021   01      01    1
2   A       7.9      2021   01      01    2
3   A       4.2      2021   02      01    0
4   A       6.8      2021   02      01    1
5   A       7.2      2021   02      01    2
6   A       4.4      2021   02      01    3

而且,我需要 df3 在合并后看起来像这样:

    site    data1    data2  year   month   day   hour
0   A       3.7      3.9    2021   01      01    0
1   A       6.4      6.0    2021   01      01    1
2   A       7.5      7.9    2021   01      01    2
3   A       3.9      4.2    2021   02      01    0

谢谢。我尝试过的尝试没有达到预期的结果。我已经将此作为我的最新尝试进行了尝试,并且出于某种原因从 df1 重复了小时数据值。这是我尝试过的内部合并:

df3 = df2.merge(df1, on=['site','year','month','day','hour'],how='inner')

最明显的是 df1.merge(df2),您可以更具体地使用:

df = pd.merge(df1,df2,left_on=['site','year','month','day','hour'],right_on=['site','year','month','day','hour'] ,how='inner')

你得到了你想要的结果:

    site    data1   year    month   day hour    data2
0   A       3.7    2021     1       1   0       3.9
1   A       6.4    2021     1       1   1       6.0
2   A       7.5    2021     1       1   2       7.9
3   A       3.9    2021     2       1   0       4.2

整理您可以使用的列df[['site','data1','data2','year','month','hour']]