熊猫:按组总结行数

时间:2015-04-02 13:35:08

标签: python pandas

我想创建两个总和,一个以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.012397e+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 个答案:

答案 0 :(得分:0)

您可以先对列进行总结,然后分组:

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