python - 将列值与行切片中的 n 行值进行比较
问题描述
假设一个数据框:
>>> data = pd.DataFrame([[9],[5],[1],[2]])
>>> data
0
0 9
1 5
2 1
3 2
假设我想添加一个列来比较前 2 行或 n 行,如果这些数字中的任何一个高于当前数字,则写 False,否则为 True 表示前 2 或 n 行中没有数字高于当前行。
例子:
0 Highest
0 9 True
1 5 True
2 1 False
3 2 NaN
9 高于 5 和 1,5 高于 1 和 2,但 1 不高于 2 等等。我需要用 n 行执行此操作,从 20 到 50+
解决方案
使用pandas.Series.rolling.max
:
s = data[0]
data["Highest"] = s.eq(s[::-1].rolling(2).max())
print(data)
输出:
0 Highest
0 9 True
1 5 True
2 1 False
3 2 False
洞察力:
s[::-1]
:给定 OP 的条件,最大比较是在接下来的n 个项目上进行的。IMO,这与以相反的方式比较系列相同。pd.Series.rolling
:提供n
滚动窗口计算。换句话说,为本地比较创建小批量。然后max
按照 OP使用pd.Series.eq
: 提供 和 的元素比较self
,input
因此无论给定元素(或行)是否最高,都有一个布尔数组。
推荐阅读
- console - 为什么安装 Surge 会出错?
- asp.net-core - aspboilerplate 存储过程不适用于不同的数据库租户
- sql - SQL 查询排除已映射到另一个列 id 的记录并向它们显示剩余
- facebook - 我的 Facebook 应用最近在从移动设备访问时停止工作,但桌面浏览仍然有效
- php - config.inc.php 中指定的服务器未显示在 phpMyAdmin 中
- nginx - Kubernetes nginx 入口路由路径
- ruby-on-rails - 需要知道 Rails 请求执行的时间花在了哪里
- r - 应用异方差稳健误差后如何找到残差图
- events - 如何在主干中捕获点击事件
- react-native - react-native-device-info 无法获取唯一 ID