【问题标题】:How to aggregate values of pandas series如何聚合熊猫系列的值
【发布时间】:2017-01-14 14:07:31
【问题描述】:

使用 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

【问题讨论】:

    标签: python pandas series multi-index cumsum


    【解决方案1】:

    我认为您可以在第二级使用DataFrameGroupBy.cumsumgroupby

    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
    

    【讨论】:

    • 我以前不知道cumsum()。非常感谢!这正是我想要的。
    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 2022-12-16
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    相关资源
    最近更新 更多