Pandas技术问询:如何将series2重采样匹配series1的DatetimeIndex
匹配Pandas时间序列索引的两种实用方法
嘿,这个场景我之前处理过!要让series2的索引完全匹配series1的DatetimeIndex,其实有两种思路,看你具体需求来选:
方法一:重采样聚合后对齐索引
因为你的series2频率是30秒,比series1的1分钟频率更高,我们可以先把series2按series1的频率(1分钟)做聚合,再用series1的索引来筛选结果:
# 第一步:将series2重采样为1分钟频率,这里以取每个分钟区间的最后一个值为例 # 你也可以根据需求改成.mean()/.first()/.sum()等聚合方式 series2_resampled = series2.resample('1T').last() # 第二步:用series1的索引对齐,得到完全匹配的结果 series2_matched = series2_resampled.reindex(series1.index)
这个方法适合你需要对高频数据做聚合统计的场景,比如想得到每个分钟的平均/总和值,而不是仅仅取精确时间点的数据。
方法二:直接按目标索引提取/填充
如果你的需求只是获取series2中与series1索引完全对应时间点的数据,或者需要处理可能的缺失时间点,可以直接用reindex或者loc:
精确匹配(无缺失时)
因为你的series1索引都是整分钟点,而series2的索引包含这些时间点(每30秒一个),所以直接提取就行:
series2_matched = series2.loc[series1.index]
处理缺失时间点
如果series1的某些时间点在series2中不存在,会返回NaN,这时候可以用填充方法:
# 向前填充(用前一个最近的值填充) series2_matched = series2.reindex(series1.index, method='ffill') # 或者向后填充(用后一个最近的值填充) series2_matched = series2.reindex(series1.index, method='bfill')
这个方法更直接,适合不需要聚合,只需要对齐时间点的场景。
你可以根据自己的业务需求选择对应的方法,两种方式都能完美匹配series1的DatetimeIndex~
内容的提问来源于stack exchange,提问作者Ohm
相关产品推荐
相关产品推荐

