计算时间差,如果值没有超过一定的阈值,如果时间差在给定的时间间隔内打印名称
Calculate the time difference, if value doesn't pass certain threshold and if time difference is in given interval print name
我有一个如下所示的数据框:
+-------+------------+------+--------+
| 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,并且,
从 2016 年到 2018 年,Y 在 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]
我有一个如下所示的数据框:
+-------+------------+------+--------+
| 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,并且, 从 2016 年到 2018 年,Y 在 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]