python - 计算时间差,如果值不超过某个阈值并且时间差在给定的间隔打印名称
问题描述
我有一个看起来像这样的数据框:
+-------+------------+------+--------+
| Index | Time | Name | Weight |
+-------+------------+------+--------+
| 0 | 2016-01-31 | X | 84 |
| 1 | 2017-01-31 | X | 80 |
| 2 | 2018-01-31 | X | 86 |
| 3 | 2019-01-31 | X | 82 |
| 4 | 2016-01-31 | Y | 84 |
| 5 | 2017-01-31 | Y | 80 |
| 6 | 2018-01-31 | Y | 87 |
| 7 | 2019-01-31 | Y | 90 |
| 8 | 2016-01-31 | Z | 88 |
| 9 | 2017-01-31 | Z | 92 |
| 10 | 2018-01-31 | Z | 91 |
| 11 | 2019-01-31 | Z | 92 |
+-------+------------+------+--------+
而且我想仅为其重量 <= 90 至少 2 年的名称打印不同的名称。
所以答案是 [X, Y] 因为;
X 4 年低于 90,Y 从 2016 年到 2018 年 3 年低于 90,Z 失败,因为它仅在 2016 年低于 90。
我真的无法弄清楚这一点!有没有办法解决这个问题?任何帮助将不胜感激!非常感谢您!
解决方案
我们可以在rolling
n
这里做的是你的脱粒
n=2
s=(df['Weight']<90).groupby(df['Name']).rolling(n).sum().eq(n).groupby(level=0).any()
Name
X True
Y True
Z False
Name: Weight, dtype: bool
s.index[s]
推荐阅读
- ios - IONIC - ITMS-90809:不推荐使用的 API
- r - DiagrammeR 如何使用 HTML 左对齐节点中的文本
- c# - EF Core:where 子句检查是否至少一个字符串列包含数组中的所有值
- css - Bootstrap 模态没有动画
- c# - Python 和 .Net 集成选项
- google-sheets-formula - 是否有在单元格中搜索部分文本的功能
- node.js - 即使我没有使用 GROUP BY,使用 SQL Server 进行 Sequelize 也会返回错误聚合函数或 GROUP BY 子句
- odoo - 设置页面可以保存值但不显示保存的值
- sql-server - insert into looping based on select quantity
- angular - 如何将对象值分配给请求模型