如何聚合熊猫系列的值
Posted
技术标签:
【中文标题】如何聚合熊猫系列的值【英文标题】: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
【问题讨论】:
【参考方案1】:我认为您可以在第二级使用DataFrameGroupBy.cumsum
和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
【讨论】:
我以前不知道cumsum()
。非常感谢!这正是我想要的。以上是关于如何聚合熊猫系列的值的主要内容,如果未能解决你的问题,请参考以下文章