如何在pandas中填充指定列aStart与aEnd区间内的空值
Pandas区间标记空值填充处理方案
实现代码
首先导入依赖库:
import pandas as pd import numpy as np
构造测试用DataFrame:
df = pd.DataFrame({ 'x': range(1, 14), 'y': ['b', np.nan, 'aStart', 'aStart', np.nan, np.nan, np.nan, np.nan, 'aEnd', 'c', 'aStart', np.nan, 'aEnd'] })
核心处理逻辑:
# 标记当前行是否处于aStart和aEnd的中间区间 in_interval = (df['y'].eq('aStart').cumsum() - df['y'].eq('aEnd').shift(fill_value=0).cumsum()) > 0 # 仅将区间内的空值填充为'a' df.loc[in_interval & df['y'].isna(), 'y'] = 'a' # 替换原有aStart、aEnd标记为NaN df.loc[df['y'].isin(['aStart', 'aEnd']), 'y'] = np.nan
补充问题说明
上述逻辑天然支持保留b、c等其他无关值:填充操作仅作用于处于区间内且为NaN的行,其他非空值不管是否在区间内都不会被修改,原有处理逻辑完全不需要调整。
内容的提问来源于stack exchange,提问作者connor449
相关产品推荐
相关产品推荐

