2014-06-10 2 views
0

에 함수를 적용 내가 가진 일련의 '수신'과 같이 보이 : LOCAL_TIME 함께 numbers.hash와는 MultiIndex입니다 팬더는하십시오 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과 값으로 구성된 각 시계열의 값을 합산합니다. 나는 number.hash 인덱스를 얻을 수 있고 그것들을 반복 할 수 있다고 생각한다. 그러나 그것을 수행하는 더 효율적이고 깨끗한 방법이 있어야한다. 'GROUPBY/그룹화'의 팬더 웹 사이트의 수준에 의해

+0

봐 . '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