python - 根据特定条件通过 cumsum() (或任何其他此类函数)评估 df['column'] 的总和。熊猫
问题描述
我的数据与“板球”有关,这是一种在印度很受欢迎的运动。每局最多有 20 个回合,每个回合大约有 6 个球(可能会有所不同)。
数据框有这些列,
season match_id inning batting_team bowling_team total_runs_per_ball sum_total_runs sum_total_wickets over/ball runs_last_5 wickets_last_5
sum_total_runs
是 的 cumsum() 结果total_runs_per_ball
。
sum_total_wickets
也是另一个查询的 cumsum() 结果。
runs_last_5
并且wickets_last_5
是新创建的列,预设值为 0。我想通过确定它们在最后 5 轮中的总和来更新这两个。
首先,我的数据看起来像这样(没有显示一些不太重要的列),
有很多列要显示,所以我用图片代替。
我不知道如何通过代码确定最后 5 次。我没有显示 5.1 之前的行(over/ball < 5.1)。但是将从那里获取数据,直到结束/球 9.6,对于 10.1,最后 5 次结束将一直到 5.1 runs_last_5
。wickets_last_5
我的意思是,从逻辑上和口头上我知道如果 current over 是 8.1,那么runs_last_5将是sum_total_runs 从 3.1 到 8.1 over/ball 或者如果当前 over/ball 是 11.3 那么runs_last_5将是sum_total_runs从 6.3over/ball
到 9.3 over/ball
。和都将从runs_last_5
和中获取此数据。wickets_last_5
sum_total_runs
sum_total_wickets
runs_last_5
wickets_last_5
应该看起来像,
在[]: df.head(10)
出去[]:
sum_total_runs sum_total_wickets runs_last_5 wickets_last_5
32 61 0 59 0
33 61 1 59 1
34 61 1 59 1
35 61 1 59 1
36 61 1 58 1
37 61 1 58 1
38 62 1 55 1
39 63 1 52 1
40 64 1 47 1
41 66 1 45 1
在[]: df.tail(10)
出去[]:
sum_total_runs sum_total_wickets runs_last_5 wickets_last_5
75879 102 9 31 4
75880 106 9 35 4
75881 106 9 35 4
75882 106 9 31 4
75883 106 9 30 4
75884 106 9 29 4
75885 107 9 29 4
75886 107 9 28 4
75887 107 9 24 4
75888 107 10 23 5
解决方案
推荐阅读
- sql - 下表应该如何规范化?
- css - 内联块中带有垂直对齐的居中图标
- r - 通过分隔符将字符分隔为假定固定宽度的向量
- c# - 用户通过 SQL 以多个权限级别登录
- java - Minecraft GUI 插件,无法在 1.13.2 中正确检查附魔 - 纸 #501
- c# - 使用 Prism for Xamarin.Forms 创建新项目时出错
- node.js - 改善 node js activedirectory 模块进行 findUsers 查询的延迟
- php - 我在使用 eloquent 和 slim3 时出现解析错误
- python-3.x - Pandas:如何对两个特定列之间的(动态)列求和?
- vectorization - 我怎样才能使这个功能和 vDSP 版本一样快?