python pandas - 转换自定义聚合

标签 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

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

最佳答案

您可以分割输出 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

关于python pandas - 转换自定义聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61476188/

相关文章:

python - 如何在python中使用dir()区分数据成员和函数成员?

python - 如何修复 "Exception in tkinter callback": "unsupported operand type(s)" in Python

python - 将数据帧转换为 json 文件时出现问题

python - 如何将 for 循环转换为 Python 中的并行处理?

python - 属性错误 : 'DataFrame' object has no attribute 'label'

python - Flask:重定向不存在的 URL

python - 文本文件前面的字节

python - Pandas 如何截断分钟,秒 pandas.tslib.Timestamp

python - Pandas 。按索引分组并为列应用最大值

python - 在 Django 中格式化 Pandas 小数