2013-11-26 31 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

相關問題