Как рассчитать общий объем продаж на одного клиента? питон

Я пытаюсь создать столбец, отображающий общий объем продаж на «ClientId». Клиент может появляться в моем наборе данных несколько раз, поэтому я хочу, чтобы значение TotalSales в новом столбце было одинаковым для каждого клиента.

Я пытался сделать группу двумя разными способами, но вывод неверен, я не знаю почему, это должен быть простой расчет Вот что я пробовал:

df['TotalSales'] = df.groupby('ClientId')['Sales'].apply(lambda x: x.astype(int) / x.astype(int).sum())
df['TotalSales'] = df.groupby('ClientId')['Sales'].sum().reset_index()

Пример набора данных

dataset = {'ClientId': [10,20,20,20,10,5,3,7,5,20,12,5,3,20,5,8,10,9,7,20,21,5,3,10],
           'Sales': [100,50,25,30,40,50,200,600,20,40,100,20,50,400,250,300,125,75,90,10,225,550,450,55]}
df = pd.DataFrame(data=dataset)

Кто-нибудь знает, как я могу это решить?

Заранее спасибо за вашу помощь!

df['TotalSales'] = df.groupby('ClientId')['Sales'].transform('sum').
Quang Hoang 15.12.2020 16:22

Килли, вы группируете, поэтому количество строк на выходе не будет соответствовать количеству строк в фрейме данных df.

Rafa Febrer 15.12.2020 16:31

И, кстати, если вам нужно среднее значение, вы можете сделать это: series = df.groupby('ClientId')['Sales'].apply(np.mean) и --> import numpy as np

Rafa Febrer 15.12.2020 16:32

Ах вот почему! Спасибо! Я не знал о transform

Killi Mandjaro 15.12.2020 16:35
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
3 926
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
df['TotalSales'] = df['Sales'].groupby(df['ClientId']).transform('sum')

Другие вопросы по теме