Как узнать для каждого продукта, сколько было продано в Pandas DataFrame

#python #pandas #dataframe

#python #pandas #dataframe

Вопрос:

У меня есть pandas dataframe, подобный этому:

       Name Product  Amount
0      Bob   Apple       1
1      Bob  Banana       2
2  Jessica  Orange       3
3  Jessica  Banana       4
4  Jessica  Tomato       3
5     Mary  Banana       2
6     John   Apple       3
7     John   Grape       1
  
 import pandas as pd

data = [('Bob','Apple',1), ('Bob','Banana',2), ('Jessica','Orange',3),
      ('Jessica','Banana',4),('Jessica','Tomato',3), ('Mary','Banana',2),
      ('John','Apple',3),('John','Grape',1)]

df = pd.DataFrame(data,columns=['Name','Product','Amount'])

  

Что я сделал до сих пор:

 l = []
count=0
for i in range(0,8):
    row = df.iloc[i]
    
    if row.Product not in l:
        l.append(row.Product)

  

Теперь l содержит все уникальные значения в столбце Product, но мне также нужна общая сумма.

Как я могу узнать для каждого продукта, сколько товаров было продано (например, было продано 4 единицы Apple)?

Ответ №1:

Вы ищете .groupby() функцию:

 print( df.groupby('Product')['Amount'].sum() )
  

С принтами:

 Product
Apple     4
Banana    8
Grape     1
Orange    3
Tomato    3
Name: Amount, dtype: int64
  

 out = df.groupby('Product')['Amount'].sum()
print('{} units of Apple were sold.'.format(out.loc['Apple']))
  

С принтами:

 4 of Apple were sold.
  

Комментарии:

1. Вы лучшие! Большое спасибо.