#python #pandas
#python #pandas
Вопрос:
Я новичок в использовании Pandas и пытаюсь реструктурировать фрейм данных, чтобы удалить дубликаты в моем первом столбце, сохраняя при этом количество каждого дубликата и принимая сумму значений во втором столбце.
Например, я хотел бы, чтобы преобразование выглядело примерно так:
[В]:
--- ------ -------
| | Name | Value |
--- ------ -------
| 0 | A | 5 |
| 1 | B | 5 |
| 2 | C | 10 |
| 3 | A | 15 |
| 4 | A | 5 |
| 5 | C | 10 |
--- ------ -------
[Выход]:
--- ------ -------- -------
| | Name | Number | Total |
--- ------ -------- -------
| 0 | A | 3 | 25 |
| 1 | B | 1 | 5 |
| 2 | C | 2 | 20 |
--- ------ -------- -------
До сих пор я не смог найти эффективный метод для этого. (Или даже рабочий метод.)
Я буду работать с несколькими сотнями тысяч строк, поэтому мне нужно будет найти довольно эффективный метод.
Комментарии:
1.
df.groupby('Name')['Value'].agg(['count', 'sum']).reset_index()
2. Спасибо, .agg() — это то, что я искал!
Ответ №1:
Функция pandas agg в groupby — это то, что вам нужно. https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas .DataFrame.agg.html
Вот пример:
import pandas as pd
df=pd.DataFrame({'Name':['A','B','C','A','A','C'],
'Value':[5,5,10,15,5,10]})
df.groupby('Name').agg(['count','sum'])
Надеюсь, это поможет.