汇总大熊猫的指数?

时间:2014-08-08 15:21:41

标签: pandas

如何在我打算映射到新值的索引上聚合(求和)?基本上我有两个变量的groupby结果,我希望将一个变量分组为更大的类。以下代码通过映射第一个副变量对s执行此操作,但似乎过于复杂:

import pandas as pd

mapping={1:1, 2:1, 3:3}

s=pd.Series([1]*6, index=pd.MultiIndex.from_arrays([[1,1,2,2,3,3],[1,2,1,2,1,2]]))

x=s.reset_index()
x["level_0"]=x.level_0.map(mapping)

result=x.groupby(["level_0", "level_1"])[0].sum()

有没有办法更简洁地写这个?

1 个答案:

答案 0 :(得分:3)

level=有一个Series.sum()选项,我想你可以使用它,这将是一个非常简洁的方法。

In [69]:

s.index = pd.MultiIndex.from_tuples(map(lambda x: (mapping.get(x[0]), x[1]), s.index.values))
s.sum(level=(0,1))
Out[69]:
1  1    2
   2    2
3  1    1
   2    1
dtype: int64