2016-09-05 34 views
0

我有數據幀這樣如何在複雜的條件下GROUPBY在熊貓

 A B C 
0 1 7 a 
1 2 8 b 
2 3 9 c 
3 4 10 a 
4 5 11 b 
5 6 12 c 

我想獲得GROUPBY結果(鍵= C列)以下;

A B 
d 12 36 

「d」 表示a或b,

所以我想只用 「a」 和 「b」 按鈕GROUPBY。

然後放在一起爲「d」。

當我與所有的關鍵要素綜上所述然後下降,它消耗更多的時間....

+0

所以,你想在'C'列中用'c'刪除行嗎? – Psidom

+0

感謝您的早日回覆。我想在colulmn C中放棄c – Heisenberg

回答

1

一種選擇是使用pandaswhere變換第C列,使得它被ab變得d然後你就可以GROUPBY轉化列,並完成它的正常的總結,如果與c行不希望,你可以簡單的總結後砸:

df_sum = df.groupby(df.C.where(~df.C.isin(['a', 'b']), "d")).sum().reset_index() 

df_sum 
# C A B 
#0 c 9 21 
#1 d 12 36 

df_sum.loc[df_sum.C == "d"] 

# C A B 
#1 d 12 36 

爲了看得更清楚如何where條款工作原理:

df.C.where(~df.C.isin(['a','b']), 'd') 

# 0 d 
# 1 d 
# 2 c 
# 3 d 
# 4 d 
# 5 c 
# Name: C, dtype: object 

它的作用就像一個替換方法和替換abd傳遞給groupby功能時將被分組在一起。