如何合并来自 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_asof
和 direction=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
我有 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_asof
和 direction=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