Я хотел бы создать две суммы, одну условную сумму на date
и type
, и одну условную только на date
. Вот выдержка из моего кадра данных:Pandas: суммировать строки по группам
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())
Все это дает мне сумму на колонку, а не сумма по всем колонкам. Для случая, когда я хотел, чтобы обусловить как на type
и date
, я могу просто сделать
weightsDf.sum(axis=1)
Но как я перехожу в случае, когда я хочу кондиционировать только на date
? В отличие при нанесении на фрейме данных,
weightsDf.groupby(level=[0,1]).sum(axis=1)
не принимает аргумент axis
. I мог бы расколоть фрейм данных для второго уровня, а затем суммировать по строке, но это кажется слишком сложным.
Первая сумма столбцов, а затем группой? '' weightsDf.sum (axis = 1) .groupby (level = [0,1]). sum() '' Это то, что вы ищете? – joris
@joris: Работы :) – FooBar