熊猫:将函数应用于多索引系列

时间:2014-06-10 14:33:42

标签: python pandas indexing

我有一系列'传入',如下所示:

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一起是MultiIndex。 现在我想将任何函数应用于仅由numbers.hash索引的每个系列,例如将由local_time和值组成的每个时间序列中的值相加。我想我可以得到number.hash索引并迭代它们,但必须有一个更有效和干净的方法来做它。

1 个答案:

答案 0 :(得分: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

或者分组并应用任意函数

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