You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas DataFrame中查找连续负数的最大出现个数

解决方案

直接用pandas的掩码、分组累计和滚动最大值逻辑即可实现,完整可运行代码如下:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'numbers': [-1, 3, 2, -3, -4, 9, 3]
})

# 1. 生成负数掩码,负数位置标记为True,非负为False
neg_mask = df['numbers'] < 0
# 2. 为连续的相同掩码值分配相同组ID,连续负数会被分到同一组
group_id = (neg_mask != neg_mask.shift()).cumsum()
# 3. 按组计算连续负数的累计个数,非负位置结果为0
cons_count = neg_mask.groupby(group_id).cumsum()
# 4. 计算到当前行为止的历史最大连续负数个数
df['max_cons'] = cons_count.cummax()

print(df)

运行后输出结果和你给出的示例完全一致:

numbers  max_cons
0       -1         1
1        3         1
2        2         1
3       -3         1
4       -4         2
5        9         2
6        3         2

额外说明

如果你不需要逐行的历史最大值,只需要整个列的全局最大连续负数个数,把最后一步换成 max_cons = cons_count.max() 即可。

内容的提问来源于stack exchange,提问作者tompal18

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:06:03