Python 是否仅通过dataframe中的某些键聚合列?

Python 是否仅通过dataframe中的某些键聚合列?,python,pandas,dataframe,Python,Pandas,Dataframe,我有这样一个数据帧: k1 k2 k3 v1 v2 foo bar baz 20 40 foo bar baz 10 30 foo bar baz 5 20 foo bar qux 10 20 foo bar qux 10 30 foo bar qux 15 20 bar baz foo 1

我有这样一个数据帧:

k1     k2     k3     v1     v2
foo    bar    baz    20     40
foo    bar    baz    10     30
foo    bar    baz    5      20
foo    bar    qux    10     20
foo    bar    qux    10     30
foo    bar    qux    15     20
bar    baz    foo    10     15
bar    baz    foo    20     35
bar    baz    foo    10     40
k1     k2     k3     v1     v2
foo    bar    baz    35     160
foo    bar    qux    35     160
bar    baz    foo    40     90
我想做的基本上是通过所有三个k*列来聚合和v1,但只通过k1和k2来聚合v2,所以我最终得到如下结果:

k1     k2     k3     v1     v2
foo    bar    baz    20     40
foo    bar    baz    10     30
foo    bar    baz    5      20
foo    bar    qux    10     20
foo    bar    qux    10     30
foo    bar    qux    15     20
bar    baz    foo    10     15
bar    baz    foo    20     35
bar    baz    foo    10     40
k1     k2     k3     v1     v2
foo    bar    baz    35     160
foo    bar    qux    35     160
bar    baz    foo    40     90

换句话说,在聚合版本中,v2基本上忽略了k3的存在,而只是在两行中都有k1和k2的总和。无论我怎么努力,我似乎都无法实现这一目标,但我确信我只是错过了一些东西。有人知道怎么做吗?

我想没有办法做两次群比。然后加入

In [22]: df1 = df.groupby(['k1', 'k2', 'k3'])['v1'].sum()

In [23]: df2 = df.groupby(['k1', 'k2'])['v2'].sum()

In [24]: df1.reset_index().join(df2, on=['k1', 'k2'])
Out[24]:
    k1   k2   k3  v1   v2  
0  bar  baz  foo  40   90  
1  foo  bar  baz  35  160 
2  foo  bar  qux  35  160 

我想没有办法做两次群比。然后加入

In [22]: df1 = df.groupby(['k1', 'k2', 'k3'])['v1'].sum()

In [23]: df2 = df.groupby(['k1', 'k2'])['v2'].sum()

In [24]: df1.reset_index().join(df2, on=['k1', 'k2'])
Out[24]:
    k1   k2   k3  v1   v2  
0  bar  baz  foo  40   90  
1  foo  bar  baz  35  160 
2  foo  bar  qux  35  160 

我想这会让我走完剩下的路。太棒了,谢谢!我想这会让我走完剩下的路。太棒了,谢谢!