首页 > 解决方案 > python pandas - 转换自定义聚合

问题描述

具有以下数据框,包含2 天内的用户活动:

    user    score
0   A   10
1   A   0
2   B   5

我想计算当时的平均用户分数并将结果转换为所有行:

import pandas as pd

df = pd.DataFrame({'user' : ['A','A','B'],
                   'score': [10,0,5]})

df["avg"] = df.groupby(['user']).transform("sum")["score"]
df.head()

这可以给我每个用户的一些:

    user    score   avg
0   A         10    10
1   A          0    10
2   B          5    5

现在我想将每个分数除以天数 (2) 以获得:

    user    score   avg
0   A         10    5
1   A          0    5
2   B          5    2.5

这可以在我计算总和的同一行上完成吗?

标签: pythonpandas

解决方案


您可以将输出Series除以2

df = pd.DataFrame({'user' : ['A','A','B'],
                   'score': [10,0,5]})

df["avg"] = df.groupby(['user']).transform("sum")["score"] / 2

print (df)
  user  score  avg
0    A     10  5.0
1    A      0  5.0
2    B      5  2.5

推荐阅读