python在一个统一的半年期重新取样(相当于pandas重新取样中的'BQ')。[英] python re-sample at a uniform semiannual period (equivaent of 'BQ' in pandas resample)

本文是小编为大家收集整理的关于python在一个统一的半年期重新取样(相当于pandas重新取样中的'BQ')。的处理方法,想解了python在一个统一的半年期重新取样(相当于pandas重新取样中的'BQ')。的问题怎么解决?python在一个统一的半年期重新取样(相当于pandas重新取样中的'BQ')。问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

python 中是否有一个"BQ"等效的半年重新采样?我这里没找到

http://pandas.pydata.org/pandas-docs/dev/timeseries.html#up-and-downsampling

我有一组记录,其中一些遵循 jun-dec,一些 jan-jul,一些 feb-auh 等.我如何将它们全部重新采样到 jun-dec(jun-dec 并发,并遵循jun/dec 是否有其他记录?

谢谢.

推荐答案

'2BQ'怎么样?

In [57]: ts = pd.Series(range(1000), index=pd.date_range('2000-4-15', periods=1000))

In [58]: ts.resample('2BQ', how='sum')
Out[58]: 
2000-06-30      2926
2000-12-29     30485
2001-06-29     63609
2001-12-31     98605
2002-06-28    127985
2002-12-31    166935
2003-06-30      8955
Freq: 2BQ-DEC, dtype: int64

2 Quarter 偏移量将基于系列中的第一个时间戳,因此如果您的数据恰好在 1 月至 3 月或 6 月至 9 月开始,则锚点将是错误的.解决此问题的一种方法是在系列开头填写一个虚拟日期,以便锚点正确.

ts = pd.Series(range(1000), index=pd.date_range('2000-3-15', periods=1000))

from datetime import datetime
if ts.index[0].month in [1,2,3]:
    ts.loc[datetime(ts.index[0].year - 1, 12, 1)] = np.nan
elif ts.index[0].month in [7,8,9]:
    ts.loc[datetime(ts.index[0].year, 6, 1)] = np.nan

应该给出正确答案(并且可以放弃第一个条目).

In [85]: ts.resample('2BQ', how='sum')
Out[85]: 
1999-12-31       NaN
2000-06-30      5778
2000-12-29     36127
2001-06-29     69251
2001-12-31    104340
2002-06-28    133534
2002-12-31    150470
Freq: 2BQ-DEC, dtype: float64

本文地址:https://www.itbaoku.cn/post/1727828.html