我正在尝试向数据框添加一个新列,显示每个用户的平均购买金额。数据帧称为trainDf,下面的代码行按用户生成平均值。我正在尝试学习如何将其添加为列以显示类似于上面的图像。
AveragePurchaseAmountUser = trainDf.groupby(by='User_ID')['Purchase_Amount'].mean()
提前谢谢!
答案 0 :(得分:0)
您可以尝试:
trainDf['AveragePurchaseAmountUser'] = trainDf.groupby(['User_ID'])['Purchase_Amount'].mean()
答案 1 :(得分:0)
avg_df = trainDf.groupby(by='User_ID')['Purchase_Amount'].mean().reset_index().rename(columns={'Purchase_Amount': 'Avg'})
trainDf = trainDf.merge(avg_df, on='User_ID')
答案 2 :(得分:0)
这将返回带有新列
的DataFramedef avg(df):
df['Average_Purchase_Amount'] = df['Purchase_Amount'].mean()
return df
newDf = trainDf.groupby(by='User_ID').apply(avg)
如果您希望将列作为系列,则可以应用此功能:
def avgSeries(df):
return pd.Series(data = df['Purchase_Amount'].mean(), index = df.index)
然后将列添加到DataFrame
答案 3 :(得分:0)
这是transform
的用途
AveragePurchaseAmountUser = trainDf.groupby(by='User_ID')['Purchase_Amount'].transform() .mean()
我无法测试atm,但您可能需要
...transform('mean')
相反