2016-09-05 2 views
0

に複雑な状況にGROUPBYする私は、私は以下のGROUPBY結果(キー=列C)を取得したいと思い、この方法パンダ

 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 

のようなデータフレームを持っています。

A B 
d 12 36 

"d" は、aまたはbを意味し、

ので、私は "A" と "B" とだけGROUPBYしたいと思います。

とし、「d」とする。私はそれが多くの時間を消費し、ドロップし、すべての重要な要素でまとめる

....

+0

したがって、 'C'列を' C'列にドロップしたいですか? – Psidom

+0

お早めにお返事ありがとうございます!私はCでドロップしたい – Heisenberg

答えて

1

一つの選択肢は、それがaまたはbdなった場所となるよう、C列を変換するためにpandaswhereを使用することですその後、あなたは、変換された列をGROUPBYし、その上に通常の要約を行う、とcを持つ行を希望しない場合は、単純に要約した後、それをドロップすることができ:より明確にどのようにwhere句を参照するには

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 

作品:

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 

それは交換する方法のように機能し、groupby関数に渡されたときに一緒にグループ化されますdabを交換してください。

関連する問題