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
我想这会让我走完剩下的路。太棒了,谢谢!我想这会让我走完剩下的路。太棒了,谢谢!