#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. Вы лучшие! Большое спасибо.