Pandas:显示groupby聚合统计数据和数据

时间:2017-12-05 15:17:09

标签: python pandas

Data Snippet

我正在尝试向数据框添加一个新列,显示每个用户的平均购买金额。数据帧称为trainDf,下面的代码行按用户生成平均值。我正在尝试学习如何将其添加为列以显示类似于上面的图像。

AveragePurchaseAmountUser = trainDf.groupby(by='User_ID')['Purchase_Amount'].mean()

提前谢谢!

4 个答案:

答案 0 :(得分:0)

您可以尝试:

trainDf['AveragePurchaseAmountUser'] = trainDf.groupby(['User_ID'])['Purchase_Amount'].mean()

答案 1 :(得分:0)

我会使用enter image description here

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)

这将返回带有新列

的DataFrame
def 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') 

相反