python - 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
推荐阅读
- spring - Spring框架如何保证测试代码不在生产环境中执行?
- flutter - 如何向页面视图 Flutter 添加不同的项目
- c# - 有没有办法在 C# 中检测一个、组合或不检测多个布尔值?
- javascript - 在 Nuxt (Vue) 中使用 Axios 内部服务
- java - 如何让程序也能识别大写字母?
- python - Python Spark - 阈值后删除数据 - Pyspark
- php - Divi 中的错误与 php.ini
- c++ - 使用 -(archives -) gcc 命令
- azure-logic-apps - 是逻辑应用发送电子邮件活动还是任何其他支持动态帐户登录?
- c# - 为什么这个 System.IO.Pipelines 代码比基于 Stream 的代码慢得多?