如何计算每个客户的总销售额?python

如何计算每个客户的总销售额?python,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我试图创建一个列,显示每个“ClientId”的总销售额。 一个客户可能会在我的数据集中出现多次,因此我希望新列中的TotalSales值对于每个客户都保持不变 我试着用两种不同的方法进行分组,但结果不正确,我不知道为什么,这应该是一个简单的计算 以下是我尝试的: df['TotalSales'] = df.groupby('ClientId')['Sales'].apply(lambda x: x.astype(int) / x.astype(int).sum()) 样本数据集 datase

我试图创建一个列,显示每个“ClientId”的总销售额。 一个客户可能会在我的数据集中出现多次,因此我希望新列中的
TotalSales
值对于每个客户都保持不变

我试着用两种不同的方法进行分组,但结果不正确,我不知道为什么,这应该是一个简单的计算 以下是我尝试的:

df['TotalSales'] = df.groupby('ClientId')['Sales'].apply(lambda x: x.astype(int) / x.astype(int).sum())
样本数据集

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')
.Killi,您正在分组,因此您的输出行数与数据帧df的行数不匹配。顺便说一句,如果您想要平均值,您可以这样做:series=df.groupby('ClientId')['Sales'])。应用(np mean)和-->导入numpy作为npAh,这就是原因!非常感谢。我不知道关于
transform
df['TotalSales'] = df['Sales'].groupby(df['ClientId']).transform('sum')
df['TotalSales'] = df['Sales'].groupby(df['ClientId']).transform('sum')