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

如何使用Python内置函数修改布尔Series中True值的前后相邻元素

用Pandas/Numpy内置方法实现布尔Series的范围置True操作

你可以用向量化操作替代for循环,利用Pandas或Numpy的内置函数高效实现需求,以下是两种实用方案:

方案一:Pandas移位+逻辑或

通过对原Series进行多次移位,覆盖True值的前5个、后6个位置,再通过逻辑或合并所有结果:

import pandas as pd

# 示例布尔Series
s = pd.Series([False]*15 + [True] + [False]*15)

# 初始化结果为原Series
result = s.copy()

# 覆盖True位置的前5个元素(原Series向前移位1-5次)
for n in range(1, 6):
    result |= s.shift(n, fill_value=False)

# 覆盖True位置的后6个元素(原Series向后移位1-6次)
for n in range(1, 7):
    result |= s.shift(-n, fill_value=False)

方案二:Numpy卷积(高效大数据场景)

利用卷积操作一次性标记所有需要置True的位置,适合处理大规模数据:

import pandas as pd
import numpy as np

s = pd.Series([False]*15 + [True] + [False]*15)

# 创建卷积窗口:包含当前位置、前5个、后6个,共12个有效位
window = np.ones(5 + 1 + 6, dtype=bool)
# 卷积计算:窗口内只要有True,对应位置就标记为True
convolved_mask = np.convolve(s.to_numpy(), window, mode='same') > 0
# 转回Pandas Series
result = pd.Series(convolved_mask, index=s.index)

这两种方案都是完全的向量化操作,避免了手动循环的低效,且全部基于Pandas/Numpy的内置函数实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 00:26:06