2015-04-02 134 views
0

我想创建两个总和,一个条件为datetype,另一个条件仅限于date。这是我的数据帧的摘录:熊猫:按组总结行数

       0    1    2    3 
date  type                
2003-01-01 unemp 1.733275e+09 2.067889e+09 3.279421e+09 3.223396e+09 
2005-01-01 unemp 1.413758e+09 2.004171e+09 2.383106e+09 2.540857e+09 
2007-01-01 unemp 1.287548e+09 1.462072e+09 2.831217e+09 3.528558e+09 
2009-01-01 unemp 2.651480e+09 2.846055e+09 5.882084e+09 5.247459e+09 
2011-01-01 unemp 2.257016e+09 4.121532e+09 4.961291e+09 5.330930e+09 
2013-01-01 unemp 7.156784e+08 1.182770e+09 1.704251e+09 2.587171e+09 
2003-01-01 emp 6.e+09 9.692455e+09 2.288822e+10 3.215460e+10 
2005-01-01 emp 5.647393e+09 9.597211e+09 2.121828e+10 3.107219e+10 
2007-01-01 emp 4.617047e+09 8.030113e+09 2.005203e+10 2.755665e+10 

现在,我试图

weightsDf.groupby(level=[0,1]).sum() 
weightsDf.groupby(level=[0,1]).apply(lambda x: x.sum()) 

这些都让我总和每列,不是总和对所有列。对于那些我想在两个typedate调节的情况下,我可以简单地做

weightsDf.sum(axis=1) 

但是我怎么进行的,我想只date条件时?与应用于数据帧时不同,

weightsDf.groupby(level=[0,1]).sum(axis=1) 

不接受参数axis。我可能凌乱的第二层的数据帧,然后再按行,但似乎太复杂。

+1

首先总和列,然后按组? 'weightDf.sum(axis = 1).groupby(level = [0,1])。sum()''那是你在找什么? – joris 2015-04-02 13:41:07

+0

@joris:作品:) – FooBar 2015-04-02 13:42:05

回答

0

你可以做的和在列第一,然后组:

weightsDf.sum(axis=1).groupby(level=[0,1]).sum()