我有一系列'传入',如下所示:
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索引并迭代它们,但必须有一个更有效和干净的方法来做它。
答案 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