1

我有 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)
4

1 回答 1

1

使用pd.merge_asofwithdirection=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
于 2020-06-30T10:10:10.960 回答