2013-11-26 30 views
2

我有这样一个数据帧:仅通过Pandas数据框中的某些键集合列?

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 

我想要做的是所有三个K *列,但仅由K1和K2总V2的基本汇总(SUM)V1,所以我结束了是这样的:

k1  k2  k3  v1  v2 
foo bar baz 35  160 
foo bar qux 35  160 
bar baz foo 40  90 

换句话说,在聚合版V2基本上忽略K3的存在,只是在两行跨K1和K2的总。无论我尝试什么,我似乎都无法完成这个任务,但我确信我只是错过了一些东西。有人知道怎么做吗?

回答

4

我觉得没有办法做groupby两次。然后加入。

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 
+0

我想这会让我剩下的路。太好了,谢谢! – extarbags

相关问题