Pandas:对多列求和并在多列中得到结果

Aki*_*Omi 1 python group-by pandas pandas-groupby

我有一个像这样的"sample.txt".

idx A   B   C   D   cat
J   1   2   3   1   x
K   4   5   6   2   x
L   7   8   9   3   y
M   1   2   3   4   y
N   4   5   6   5   z
O   7   8   9   6   z
Run Code Online (Sandbox Code Playgroud)

使用此数据集,我希望在行和列中得到总和.在行中,这不是什么大不了的事.我做了这样的结果.

### MY CODE ###
import pandas as pd

df = pd.read_csv('sample.txt',sep="\t",index_col='idx')
df.info()

df2 = df.groupby('cat').sum()
print( df2 )
Run Code Online (Sandbox Code Playgroud)

结果是这样的.

      A   B   C   D
cat                
x     5   7   9   3
y     8  10  12   7
z    11  13  15  11
Run Code Online (Sandbox Code Playgroud)

但我不知道如何编写代码来获得这样的结果.(只需在A列和B列以及C和D列中添加值)

    AB  CD
J   3   4
K   9   8
L   15  12
M   3   7
N   9   11
O   15  15
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮忙编写代码吗?

顺便说一句,我不想​​这样做.(它看起来太沉闷,但如果这是唯一的方式,我会认为它)

df2 = df['A'] + df['B']
df3 = df['C'] + df['D']
df = pd.DataFrame([df2,df3],index=['AB','CD']).transpose()
print( df )
Run Code Online (Sandbox Code Playgroud)

piR*_*red 6

传递字典或可调用时,groupby它将应用于轴.我指定了一个是列的轴.

d = dict(A='AB', B='AB', C='CD', D='CD')
df.groupby(d, axis=1).sum()
Run Code Online (Sandbox Code Playgroud)