2017-03-06 112 views
1

我想了解如何總結基於熊貓中2個索引的行子集。第一個索引對行進行分組,第二個索引將確定要求和的行。對於一個小例子,假設我有數據幀基於熊貓的條件求和行

index1 | index2 | value 
------------------------ 
    a | 1 | 10 
    a | 2 | 11 
    a | 3 | 12 
    b | 1 | 20 
    b | 2 | 21 
    b | 3 | 22 

我怎麼能總結對應指數12行,但仍然讓他們下指數ab分組。即以下結果。

index1 | index2 | value 
------------------------ 
    a | 1 | 21 
    a | 2 | 12 
    b | 1 | 41 
    b | 2 | 22 

這裏對應的12index2該行已經彙總到的1index2

回答

2

可以派生從一個新的陣列/系列索引2列組變量,然後做了總結:

df.groupby([df.index1, ~df.index2.isin([1,2]) + 1]).value.sum().reset_index() 

#index1 index2 value 
#0 a  1  21 
#1 a  2  12 
#2 b  1  41 
#3 b  2  22 
+0

謝謝,它的工作原理的小例子,但它不能擴展。如果'index2'的範圍是'1,2,3,4',那麼它最終會返回2個組(而不是3個)。你介意給答案一些解釋,所以我可以弄清楚如何調整它以滿足我的需求? – mv3

+1

上述方法將所有1和2轉換爲1,將所有其他值轉換爲2作爲最終的組變量,因此它將只有兩個組。如果您只想將1和2合併爲一個組,並將其他值保持爲單獨的值,則可以嘗試將1全部替換爲1,例如'df.groupby([df.index1,df.index2.replace(2,1)] ).value.sum()。reset_index()'。在這種情況下,如果你沒有問題,結果索引將會有'2'丟失。 – Psidom

+1

這很好用,我會在稍後調整索引,謝謝! – mv3