【问题标题】:How can I merge time series data from 2 different csv如何合并来自 2 个不同 csv 的时间序列数据
【发布时间】:2020-10-20 14:35:10
【问题描述】:

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

【问题讨论】:

标签: python pandas dataframe time-series data-processing


【解决方案1】:

使用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

【讨论】:

    猜你喜欢
    • 2014-04-16
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 2019-06-09
    相关资源
    最近更新 更多