2013-07-03 66 views
4

我知道有一個簡單的實現來做到這一點,但我不記得語法。有一個簡單的熊貓時間序列,我想按月總結數據。具體而言,我想在幾個月和幾年中添加數據以獲得一些總結。可以用切片編寫,但我記得看到自動執行它的語法。與熊貓數月結合

import pandas as pd 
df = Series(randn(100), index=pd.date_range('2012-01-01', periods=100)) 

一個多指數系列的年份和子指數爲幾個月將是一等獎。

部分答案:

ds.resample('M', how=sum) # for calendar monthly 
ds.resample('A', how=sum) # for calendar yearly 

不知道如何優雅地獲得通過一年款項multindexed?

+0

找到的答案我認爲。添加到問題 – Joop

回答

11
In [1]: import pandas as pd 
     from numpy.random import randn 

In [2]: df = Series(randn(500), index=pd.date_range('2012-01-01', periods=500)) 

In [3]: s2 = df.groupby([lambda x: x.year, lambda x: x.month]).sum() 

In [4]: s2 
Out[4]: 
2012 1  3.853775 
     2  4.259941 
     3  4.629546 
     4 -10.812505 
     5 -16.383818 
     6  -5.255475 
     7  5.901344 
     8  13.375258 
     9  1.758670 
     10  6.570200 
     11  6.299812 
     12  7.237049 
2013 1  -1.331835 
     2  3.399223 
     3  2.011031 
     4  7.905396 
     5  1.127362 
dtype: float64 
+2

是否有一個原因,您正在使用lamdba而不是使用df.index.year和df.index.month(我更喜歡)?似乎在性能上幾乎相同。 – bmu

+3

它們是等價的,我只是使用''lambda''來表示更動態的計算,例如你可以做任何事情) – Jeff