Мои Панды Dataframe в этом формате:Панды: Суммируйте таблицу на основе значения столбца
A 5
A 7
A 4
B 2
B 7
C 8
Как я могу подытожить так:
A 16
B 9
C 8
Мои Панды Dataframe в этом формате:Панды: Суммируйте таблицу на основе значения столбца
A 5
A 7
A 4
B 2
B 7
C 8
Как я могу подытожить так:
A 16
B 9
C 8
Вы можете использовать groupby:
col1 col2
0 A 5
1 A 7
2 A 4
3 B 2
4 B 7
5 C 8
df.groupby('col1')['col2'].sum()
col1
A 16
B 9
C 8
Если вы хотите оставить столбцы такими, какие они есть, как вы упомянули в своем комментарии, вы можете конвертировать groupby
объект к новому кадру данных, если это то, что вы имели в виду. Таким образом, вы можете сделать это вместо того, чтобы:
new = pd.DataFrame({'col2' : df.groupby('col1')['col2'].sum()}).reset_index()
new
col1 col2
0 A 16
1 B 9
2 C 8
Спасибо за быстрый ответ. Одна небольшая проблема: столбцы больше не называются «col1» и «col2». Можно ли добавить еще одну строку кода, чтобы столбцы сохраняли свои имена? –
@NedHulton Я добавил новое решение для своего ответа на основе вашего комментария. Это то, что вы имели в виду? –
Я думаю, вы могли бы использовать для pivot_table
, что с sum
как функция агрегации:
In [9]: df
Out[9]:
0 1
0 A 5
1 A 7
2 A 4
3 B 2
4 B 7
5 C 8
In [10]: df.pivot_table(index=0, aggfunc=sum).reset_index()
Out[10]:
0 1
0 A 16
1 B 9
2 C 8
выглядит очень близко или дубликатом http://stackoverflow.com/questions/14941366/панды-сортировка по групповому агрегатно-и-колонке. – alecxe
Вы читали документ? [link] (http://pandas.pydata.org/pandas-docs/stable/groupby.html) – Valilutzik