在熊猫中按日期重新取样 - 在索引中弄清楚日期

时间:2017-08-14 16:40:25

标签: python pandas dataframe multi-index python-datetime

我在Pandas中有一个多索引dataFrame,数据通过构建索引,然后按日期。不同的列表示不同种类的能量,并且值表示给定月份使用了多少能量。 Image of the dataframe's head is here. 我想把它变成年度数据。我目前有这条线

df.unstack(level=0).resample('BAS-JUL').sum()

这完全符合几乎。问题在于:所有日期都是月份的第1天,但出于某种原因,正如resample那样,它选择7月2日作为2012年的截止日期。所以7月1日的数字, 2012年最终计入2011年数据。 It ends up looking like this.您可以看到“使用月份”列中的第二个值是7月2日。除此之外,resample似乎工作正常。

如果我运行df.index.get_level_values(1)[:20],则输出为:

DatetimeIndex(['2011-07-01', '2011-08-01', '2011-09-01', '2011-10-01',
           '2011-11-01', '2011-12-01', '2012-01-01', '2012-02-01',
           '2012-03-01', '2012-04-01', '2012-05-01', '2012-06-01',
           '2012-07-01', '2012-08-01', '2012-09-01', '2012-10-01',
           '2012-11-01', '2012-12-01', '2013-01-01', '2013-02-01'],
          dtype='datetime64[ns]', name='Usage Month', freq=None)

因此索引是原始数据框中的2012年7月1日。

任何关于如何解决这个迷你bug的想法都将不胜感激!

1 个答案:

答案 0 :(得分:0)

使用'AS-JUL':

df.unstack(level=0).resample('AS-JUL').sum()

B代表商业年度开始。