我在 Dataframe 中有一个浮点列。我想添加另一个布尔列,如果条件满足两个连续值,则该列为True,直到另一个条件满足下两个连续值。
例如,我有一个 Dataframe ,它看起来像这样:
| 指标|数值%|
| - ------|- ------|
| 无|无|
| 1个|五个|
| 第二章|十一|
| 三个|九|
| 四个|十四|
| 五个|十八|
| 六个|三十|
| 七|五十四|
| 八个|七十三|
| 九|一百|
| 十个|一百|
| 十一|一百|
| 十二|一百|
| 十三|一百|
现在,我想从两个连续值满足条件df['Values %'] >= 10
的位置标记为True,直到下两个连续值满足下一个条件,即df[Values %] == 100
。
所以最终的结果看起来像这样:
| 指标|数值%|旗帜|
| - ------|- ------|- ------|
| 无|无|假|
| 1个|五个|假|
| 第二章|十一|假|
| 三个|九|假|
| 四个|十四|假|
| 五个|十八|真的|
| 六个|三十|真的|
| 七|五十四|真的|
| 八个|七十三|真的|
| 九|一百|真的|
| 十个|一百|真的|
| 十一|一百|假|
| 十二|一百|假|
| 十三|一百|假|
4条答案
按热度按时间rqenqsqc1#
不知道你的问题的第二部分是如何工作的,但这里是如何实现第一部分。
condition
看起来像这样ybzsozfc2#
我有一个效率很低的方法。它不是矢量化的,所以不理想,但它很有效:
有一件事--我的方法为第10行给出False,因为第9行和第10行都〉= 100。如果这不是您想要的,请告诉我,我可以更改它,使标志只有在前两个值 * 和 * 当前值(3个连续值)都〉= 100时才为True。
kqlmhetl3#
输出:
mftmpeh84#
您可以用途:
输出:
如果需要在多个组上重复此逻辑:
输出:
中间体: