merging two pandas dataframes on nearest time stamp

前端 未结 1 1261
心在旅途
心在旅途 2021-01-19 01:07

I have two daframes df1 and df2

df1 is

time                  status
2/2/2015 8.00 am      on time
2/2/2015 9.00 am      canceled
2/2/2015 10.30 am           


        
相关标签:
1条回答
  • 2021-01-19 01:54

    First ensure that the date columns are datetime64 columns.

    df1['time'] = pd.to_datetime(df1['time'].str.replace(".", ":"))
    df2['w_time'] = pd.to_datetime(df2['w_time'].str.replace(".", ":"))
    

    If you set these as DatetimeIndexs can then use reindex with the 'nearest' method:

    In [11]: df1 = df1.set_index("time")
    
    In [12]: df2 = df2.set_index("w_time", drop=False)
    
    In [13]: df1
    Out[13]:
                           status
    time
    2015-02-02 08:00:00   on time
    2015-02-02 09:00:00  canceled
    2015-02-02 10:30:00   on time
    2015-02-02 12:45:00   on time
    
    In [14]: df2
    Out[14]:
                         temp              w_time
    w_time
    2015-02-02 08:00:00    45 2015-02-02 08:00:00
    2015-02-02 08:50:00    46 2015-02-02 08:50:00
    2015-02-02 09:40:00    47 2015-02-02 09:40:00
    2015-02-02 10:15:00    47 2015-02-02 10:15:00
    2015-02-02 10:35:00    48 2015-02-02 10:35:00
    2015-02-02 12:00:00    48 2015-02-02 12:00:00
    2015-02-02 13:00:00    49 2015-02-02 13:00:00
    

    With the following:

    In [15]: df2.reindex(df1.index, method='nearest')
    Out[15]:
                         temp              w_time
    time
    2015-02-02 08:00:00    45 2015-02-02 08:00:00
    2015-02-02 09:00:00    46 2015-02-02 08:50:00
    2015-02-02 10:30:00    48 2015-02-02 10:35:00
    2015-02-02 12:45:00    49 2015-02-02 13:00:00
    

    Then add these columns/join back to df1.

    0 讨论(0)
提交回复
热议问题