python - 在 pandas 中用 group by 取最后 n 个元素的平均值
问题描述
我有一个熊猫数据框 df 作为:
Time Type Value
1/15/2019 A 109.99
1/16/2019 A 108.47
1/17/2019 A 107.71
1/18/2019 A 109.23
1/21/2019 A 109.23
1/22/2019 A 108.47
1/23/2019 A 110.75
1/24/2019 A 112.27
2/4/2019 B 172.1
2/5/2019 B 170.55
2/6/2019 B 170.55
2/7/2019 B 171.79
2/8/2019 B 172.41
2/11/2019 B 174.89
2/12/2019 B 176.15
2/13/2019 B 174.09
2/14/2019 B 171.05
我想从上面得到每种类型的最后 3 个值的平均值,如下所示:
Type Last3Avg
A 110.50
B 173.56
即average(108.47, 110.75, 112.27) = 110.50
等。
我正在尝试各种语法来关注但没有成功:
df.groupby('Type').ix[-3:].mean()
解决方案
让我们尝试groupby
和apply
。取最后 3 行并找到它们的平均值。
df.groupby('Type').apply(lambda x: x.tail(3).mean())
Value
Type
A 110.496667
B 173.763333
同样,你也可以这样做
df.groupby('Type').tail(3).groupby('Type').mean()
Value
Type
A 110.496667
B 173.763333
推荐阅读
- javascript - 无法更改 HTML 文本字段的必需属性
- ruby - 为什么 Process.getrlimit 对于使用 IO.popen 打开的进程会失败,但 C 中的 getrlimit(2) 有效?
- swift - Swift:maximumFractionDigits 在更改货币时无法按预期工作
- graphql - 我只能在 Appync 上使用 GraphQL 中的主键进行查询?
- python - keras 变分自编码器损失函数
- ios - Swift - 如何更新 ARAnchor 以跟随相机的位置
- curl - 在 GCP 实例中安装 Plesk 时出现“cURL 无法与许可证服务器通信”
- yum - 如何创建使用 setcap 并在 dnf/yum (fedora/redhat) 和 zypper (openSuse) 上工作的 RPM 包
- git - 清理不需要提交和无关分支的 Git 分支
- java - 我得到片段 id 的无视图