【问题标题】:Pandas Merge Two Different sized Dataframe on DatetimePandas 在日期时间合并两个不同大小的数据框
【发布时间】:2016-12-19 12:23:31
【问题描述】:

我有两个要在日期列上合并的数据框。

第一个数据框保存日期时间:

    DateTime,Date,Hour

    2015-01-01 00:00:00 | 2015-01-01 | 00 
    2015-01-01 00:00:01 | 2015-01-01 | 01 

    ...

    2015-01-01 23:00:00 | 2015-01-01 | 23

第二个每天持有它:

> Date,Col3
> 
> 2015-01-01 | daily something1
> 
> 2015-01-02 | daily something2

--

我想在日期列上进行合并,以便日期中的 24 小时将具有与第二个数据框相同的每日特征。

2015-01-01 00:00:00 | 2015-01-01 | 00 |  daily something1

2015-01-01 01:00:00 | 2015-01-01 | 01 |  daily something1

...

2015-01-02 00:00:00 | 2015-01-01 | 23|  daily something2

这可以通过编写一些代码来完成,但是我可以通过使用 join 或 merge 来做到这一点吗?试着用左、右连接来做,但做不到。

【问题讨论】:

    标签: python pandas join dataframe merge


    【解决方案1】:

    让我们按照您描述的方式合并以下两个数据框。我不知道是否有一个不错的 oneliner 来完成这个,我想看看,但是这个方法有效。

    import pandas as pd
    
    df = pd.DataFrame({'DATE': pd.date_range(start='2016-01-01 00:00:00',
                                             freq='12H', periods=10)})
    df2 = pd.DataFrame({'DATE': pd.date_range(start='2016-01-01',
                                              freq='D', periods=5),
                        'VALUE': range(0,5)})
    
    # extract the date from each column
    df['DATE_DAY'] = df['DATE'].dt.date
    # even though the df2 DATE column only shows the date, it's still in
    # a different type (datetime64[ns]), so we have to convert it as well
    df2['DATE_DAY'] = df2['DATE'].dt.date
    
    tmp = df.merge(df2, on='DATE_DAY')
    >>> tmp
                   DATE_x     DATE_y    DATE_DAY  VALUE
    0 2016-01-01 00:00:00 2016-01-01  2016-01-01      0
    1 2016-01-01 12:00:00 2016-01-01  2016-01-01      0
    2 2016-01-02 00:00:00 2016-01-02  2016-01-02      1
    3 2016-01-02 12:00:00 2016-01-02  2016-01-02      1
    4 2016-01-03 00:00:00 2016-01-03  2016-01-03      2
    5 2016-01-03 12:00:00 2016-01-03  2016-01-03      2
    6 2016-01-04 00:00:00 2016-01-04  2016-01-04      3
    7 2016-01-04 12:00:00 2016-01-04  2016-01-04      3
    8 2016-01-05 00:00:00 2016-01-05  2016-01-05      4
    9 2016-01-05 12:00:00 2016-01-05  2016-01-05      4
    

    【讨论】:

      猜你喜欢
      • 2020-06-25
      • 2021-10-02
      • 1970-01-01
      • 2018-09-10
      • 2023-02-04
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多