我想创建两个总和,一个以date
和type
为条件,一个仅以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())
这些都给了我每列的总和,而不是所有列的总和。对于我想同时考虑type
和date
的情况,我可以做到
weightsDf.sum(axis=1)
但是,我如何处理我想仅在date
上进行条件的情况?与应用于数据框时不同,
weightsDf.groupby(level=[0,1]).sum(axis=1)
不接受参数axis
。我可以将第二级数据框拆开,然后再按行排序,但这看起来太复杂了。
答案 0 :(得分:0)
您可以先对列进行总结,然后分组:
weightsDf.sum(axis=1).groupby(level=[0,1]).sum()