Skip to main content
 首页 » 编程设计

python之如何将 Pandas 时间序列重新采样/对齐到最近的日历季度

2025年05月04日8傻小

设置简单

import pandas 
from datetime import datetime 
 
v = [100, 200] 
i = [datetime(2012, 1, 31), datetime(2012, 4, 30)] 
s = pandas.Series(data=v, index=i)   

这是原始时间序列:

In [11]: s 
Out[11]:  
2012-01-31    100 
2012-04-30    200 

重采样后:

In [12]: s.resample('Q') 
Out[12]:  
2012-03-31    100 
2012-06-30    200 
Freq: Q-DEC 

所以一月/四月与三月/六月对齐。

为什么 pandas 不选择 Dec/Mar 呢?

此外,有什么方法可以使它与时间序列函数对齐到 12 月/3 月(这似乎更接近原始日期)?

请您参考如下方法:

我知道没有什么简单的解决方案可以让最接近的解决方案保持一致,而且我发现当前版本非常合乎逻辑。但是使用 label='left' 你可以用当前数据实现你想要的,但它仍然没有与最接近的对齐,所以总的来说你可能必须弄清楚其他东西(比如使用 apply to更改日期,以便它们符合您的意愿)。

s.resample('Q',label='left')     
 
Out[57]: 
2011-12-31    100 
2012-03-31    200 
Freq: Q-DEC