python每半年重新取样一次(相当于熊猫重新取样中的';BQ')

python每半年重新取样一次(相当于熊猫重新取样中的';BQ'),python,pandas,Python,Pandas,python中是否存在“BQ”等效的半年重采样?我在这儿没找到 我有一组记录,其中一些记录在6月至12月之后,一些记录在1月至7月之后,一些记录在2月至12月之间,等等。我如何将所有记录重新采样到6月至12月(6月至12月并行,其他记录在6月至12月之后) 谢谢。那么'2BQ'呢 In [57]: ts = pd.Series(range(1000), index=pd.date_range('2000-4-15', periods=1000)) In [58]: ts.resample('

python中是否存在“BQ”等效的半年重采样?我在这儿没找到

我有一组记录,其中一些记录在6月至12月之后,一些记录在1月至7月之后,一些记录在2月至12月之间,等等。我如何将所有记录重新采样到6月至12月(6月至12月并行,其他记录在6月至12月之后)


谢谢。

那么
'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个季度的偏移量将基于系列中的第一个时间戳,因此如果您的数据恰好在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
应该给出正确的答案(并且可以删除第一个条目)


“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个季度的偏移量将基于系列中的第一个时间戳,因此如果您的数据恰好在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
应该给出正确的答案(并且可以删除第一个条目)


您好,谢谢。您的示例完全如您所述。对于我的系列,它总是以mar-sep的形式出现。我甚至指定为2BQ-DEC,但我仍然得到mar-sep。我可以使用它,但有什么原因吗?@user3905378-四分之一偏移上的锚定在乘法之前完成(2),因此第一个值会影响结果。请参见编辑,了解强制将其设置为12月/6月的一种方法。您好,谢谢。您的示例与您提到的完全一样。对于我的系列,它总是以3月-9月的形式出现。我甚至指定为2BQ-DEC,但我仍然得到了3月-9月。我可以使用此方法,但有什么原因吗?@user3905378-四分之一偏移上的锚定在ore的值是乘法(2),因此第一个值会影响结果。请参见编辑以了解强制将其设置为DEC/JUN的方法。