如何聚合 pandas 系列的值

How to aggregate values of pandas series

使用pandas

进行数据操作

任何人都有巧妙的方法来操纵连接的 pandas 系列的值以找到总计数?


当前数据(类型:pandas.core.series.Series) 仅供参考,此数据是使用 'groupby' 函数从原始数据生成的。

date          device        
2015-07-08    a         0        
              b         0        
              c         0        
              d         1        
2015-07-09    a         0        
              c         1         
              d         1        
2015-07-10    a         1        
              b         1        
              c         1        

预期结果(类型:pandas.core.series.Series
每个设备的值表示到目前为止计数的总数 A.
例如,total(2015-07-10, c) = 2 因为 (2015-07-09, c) = 1 和 (2015-07-10, c) = 1

date          device    
2015-07-08    a         0
              b         0
              c         0
              d         1
2015-07-09    a         0
              c         1 
              d         2
2015-07-10    a         1
              b         1
              c         2

我认为你可以使用 DataFrameGroupBy.cumsum with groupby 二级:

dates = pd.DatetimeIndex(['2015-07-08','2015-07-08','2015-07-08','2015-07-08',
                          '2015-07-09','2015-07-09','2015-07-09',
                          '2015-07-10','2015-07-10','2015-07-10'])
devices = ['a','b','c','d','a','c','d','a','b','c']
idx = pd.MultiIndex.from_tuples(list(zip(dates, devices)), names=['date', 'device'])
s = pd.Series([0,0,0,1,0,1,1,1,1,1], index= idx)
print (s)
date        device
2015-07-08  a         0
            b         0
            c         0
            d         1
2015-07-09  a         0
            c         1
            d         1
2015-07-10  a         1
            b         1
            c         1
dtype: int64

print (s.groupby(level=1).cumsum())
date        device
2015-07-08  a         0
            b         0
            c         0
            d         1
2015-07-09  a         0
            c         1
            d         2
2015-07-10  a         1
            b         1
            c         2
dtype: int64