2016-09-05 2 views
0

меня dataframe как этоткак 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 

«д» означает или б,

так Я хотел бы GroupBy только с «а» и «б».

, а затем вместе, как «d».

, когда я подытожить все ключевые элементы, то падение, он потребляет много времени ....

+0

Итак, вы хотите сбросить строки с 'c' в столбце' C'? – Psidom

+0

спасибо за ранний ответ .yes! Я хочу сбросить c в colulmn C – Heisenberg

ответ

1

Одним из вариантов является использование pandaswhere преобразовать столбец C, так что там, где он был a или b становится 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 

Он действует как метод замены и заменить a и b с d, которые будут сгруппированы вместе, когда передается groupby функции.

Смежные вопросы