2014-06-10 51 views
0

我有一系列的「來電」,看起來像這樣:大熊貓:函數應用到multiindexed一系列

number.hash        local_time   
19ace78686acf5772212d77595cb7efdb52788bf 2011-04-29 12:00:00 1 
1a84708ae329e17438e8157165f91f3dec468eb6 2011-04-25 17:00:00 1 
1f5b196086ca35e752eb39e4e348ae925d030af9 2011-02-16 14:00:00 1 
              2011-02-16 15:00:00 0 
              2011-02-16 16:00:00 0 

,其中numbers.hash和LOCAL_TIME在一起是一個多指標。 現在,我想將任何函數應用於僅由numbers.hash索引的每個系列,例如對由local_time和該值組成的每個時間序列中的值進行求和。我想我可以得到number.hash指數並迭代它們,但必須有更高效和乾淨的方法來實現它。通過電平

+0

看大熊貓網站 '的GroupBy /分組' 。它可以通過:'df.groupby(level = 0).sum()'完成。 –

回答

3
In [36]: s = Series([1,1,1,0,0],pd.MultiIndex.from_tuples([ 
('A',Timestamp('20110429 12:00:00')), 
('B',Timestamp('20110425 17:00:00')), 
('C',Timestamp('20110216 14:00:00')), 
('C',Timestamp('20110426 15:00:00')), 
('C',Timestamp('20110426 16:00:00'))])) 


A 2011-04-29 12:00:00 1 
B 2011-04-25 17:00:00 1 
C 2011-02-16 14:00:00 1 
    2011-04-26 15:00:00 0 
    2011-04-26 16:00:00 0 
dtype: int64 

總和(這些矢量和速度非常快)

In [37]: s.sum(level=0) 
Out[37]: 
A 1 
B 1 
C 1 
dtype: int64 

或者GROUPBY和應用的任意函數

In [38]: s.groupby(level=0).apply(lambda x: x.sum()) 
Out[38]: 
A 1 
B 1 
C 1 
dtype: int64 
+0

謝謝,我知道會有這樣一個簡單的方法。 – hajons