【问题标题】:Merge 2 Dataframes with Unequal Dates of Year, Month, Day, Hour合并 2 个年、月、日、小时日期不等的数据框
【发布时间】:2021-11-17 07:29:22
【问题描述】:

我一直在寻找如何合并 2 个日期不等的数据框。每个日期列都是年、月、日、小时列中的整数数据类型。假设 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)

标签: pandas date datetime merge


【解决方案1】:

最明显的是 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']]

【讨论】:

    猜你喜欢
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 2019-10-26
    • 2021-09-13
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多