如何合并来自 2 个不同 csv 的时间序列数据

How can I merge time series data from 2 different csv

我有 2 个 csv 文件,第一个包含事件的时间戳。我想从第二个 csv 文件中添加天气详细信息。

文件 1(不规则时间戳)

Time                        UserID_Detected             
2019-01-01 01:00:32          3                     
2019-01-02 06:02:12          2               
2019-01-02 14:45:32          7                    

文件 2(每小时天气)

Time                        Temperature  Humidity
1/1/2019   0:00             32            55        
1/1/2019   1:00             33            60  
1/1/2019   2:00             33            53    
.............
1/2/2019   6:00             35            58
.............
1/2/2019   15:00            38            62

我想将天气变量附加到第一个文件。由于第一个文件包含分钟和第二个信息,我将四舍五入到最近的小时。预期输出:

文件 1(最终输出)

Time                        UserID_Detected      Temperature     Humidity       
2019-01-01 01:00:32          3                     33             60
2019-01-02 06:02:12          2                     35             58
2019-01-02 14:45:32          7                     38             62          

到目前为止尝试过:

df_event = pd.read_csv("df1.csv") 
df_weather = pd.read_csv("df2.csv") 


df_event ['Time'] = pd.to_datetime(df_event['Time']) 
df_weather ['Time'] = pd.to_datetime(df_weather['Time'])

df_event = df_event .set_index('Time')
df_weather = df_weather .set_index('Time')

df_event = pd.merge(df_event ,df_weather , how='outer',left_index=True, right_index=True)

使用 pd.merge_asofdirection=nearest 合并列 Time:

上的两个数据帧
df_event['Time'] = pd.to_datetime(df_event['Time'])
df_weather['Time'] = pd.to_datetime(df_weather['Time'])

df_merged = pd.merge_asof(
    df_event.sort_values(by='Time'), df_weather.sort_values(by='Time'),
    on='Time', direction='nearest')

结果:

# print(df_merged)

                 Time  UserID_Detected  Temperature  Humidity
0 2019-01-01 01:00:32                3           33        60
1 2019-01-02 06:02:12                2           35        58
2 2019-01-02 14:45:32                7           38        62