【发布时间】:2020-05-10 20:36:29
【问题描述】:
我有两个数据框,“bio”和月度数据,我只需要 bio['Bio_Avg'] 列。 还有一个带有每日数据的“tc”。 两者都有日期时间索引。
我需要合并保持每日粒度,但添加重复列 bio['Bio_Avg'] 值的每月数据。
print(bio.head(5))
year month ncena ... contingency D Bio_Avg
Date ...
2019-12-01 2019 12 NaN ... NaN 1 38826.48
2019-11-01 2019 11 NaN ... NaN 1 33867.68
2019-10-01 2019 10 NaN ... NaN 1 31358.80
2019-09-01 2019 9 NaN ... NaN 1 29583.84
2019-08-01 2019 8 NaN ... NaN 1 27763.12
和
print(tc.head(5))
exchg_rate
2019-11-01 59.71
2019-11-02 59.74
2019-11-03 59.73
2019-11-04 59.70
2019-11-05 59.65
预期的结果应该是:
exchg_rate Bio_Avg
2019-11-01 59.71 33867.68
2019-11-02 59.74 33867.68
2019-11-03 59.73 33867.68
2019-11-04 59.70 33867.68
2019-11-05 59.65 33867.68
我试过了:
merge = pd.merge(tc, bio, left_index=True, right_index=True)
print(merge.head(5))
我得到:
exchg_rate year month ... contingency D Bio_Avg
2019-11-01 59.75 2019 11 ... NaN 1 33867.68
2019-12-01 59.94 2019 12 ... NaN 1 38826.48
当然,它只保留与日期完全匹配的日期,但我会忽略两者之间的日子。 在不破坏所有数据帧的情况下,有什么优雅的方法可以解决这个问题?
【问题讨论】:
标签: python pandas time-series