#pandas
#панды
Вопрос:
Я пытаюсь выполнить некоторую группировку выбора и суммировать, но продолжаю получать сообщения об ошибках, очевидно, что все это неправильно. Я хотел бы сгруппировать все строки, кроме нескольких, и суммировать эту основную группу. В принципе, я хотел бы создать круговую диаграмму, показывающую несколько фрагментов и основную группу как «другое». Заранее спасибо.
d = {'symbol': ['a', 'b', 'c', 'd', 'e', 'f', 'g'], 'value': [5, 5, 5, 5, 1, 1, 1]}
df = pd.DataFrame(data=d)
display(df)
Вывод:
symbol value
0 a 5
1 b 5
2 c 5
3 d 5
4 e 1
5 f 1
6 g 1
Желаемый результат:
symbol value
0 rest 20
4 e 1
5 f 1
6 g 1
Является ли это несколько правильным подходом?
def not_in_group(sym):
if (sym != 'e' or sym != 'f' or sym != 'g' in df['symbol']):
return sym
grouped = df.groupby(not_in_group, axis=1)('value').sum()
display(grouped)
Ответ №1:
Вы можете использовать isin
и np.where
для сопоставления символов:
mapped_symbols = np.where(df.symbol.isin(main_groups), df.symbol, 'rest')
df['value'].groupby(mapped_symbols).sum()
Вывод:
e 1
f 1
g 1
rest 20
Name: value, dtype: int64