Как группировать данные с соответствующими значениями

#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'])
  

Надеюсь, это поможет.