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

pandas计算Series中连续1值批次起始点之间的索引距离

计算pandas Series中连续1值块起始点间距

核心实现逻辑非常直接:你需要的「1值块+后续0值块总长度」本质就是前后两个连续1值块起始位置的索引差值,不需要分别统计连续1和连续0的长度,直接定位所有1值块的起始点后计算相邻索引差即可。

完整实现代码

import pandas as pd
import numpy as np

# 原始Series
s = pd.Series([0,0, 1,1,1,0,0,  1,1,0,  1,1,1,0,0,0,0,  1,1,1,0,0,0,  1,1,0,0])

# 1. 标记所有1值块的起始位置:当前值为1,且前一个值不为1
start_mask = (s == 1) & (s.shift(fill_value=0) != 1)
# 2. 提取所有1值块的起始索引
start_points = s[start_mask].index
# 3. 计算相邻起始点的差值,后移一位对齐
gap_values = start_points.to_series().diff().shift(-1).dropna().values
# 4. 首尾补NaN,得到最终结果
res = pd.Series(np.concatenate([[np.nan], gap_values, [np.nan]]))

print(res)

输出结果

运行上述代码得到的输出和预期完全一致:

0    NaN
1    5.0
2    3.0
3    7.0
4    6.0
5    NaN
dtype: float64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:45:04