如何删除Pandas DataFrame中列Ai介于NaN与后续值变化之间的行
实现方案
核心逻辑
需要保留的行仅包含两类:
- Ai列取值为NaN的行
- 每个NaN之后出现的第一个非NaN值行
代码实现
先构造测试用例验证逻辑:
import pandas as pd import numpy as np # 构造示例DataFrame df = pd.DataFrame({ 'Ai': [25, 30, 30, np.nan, 12, 15, 15, np.nan], 'A1': range(8), 'A2': [*'abcdefgh'] }) # 生成过滤掩码 is_nan = df['Ai'].isna() # 标记每个NaN后的第一个非NaN行,fill_value=True处理首行无前置元素的场景 first_after_nan = (~is_nan) & (is_nan.shift(fill_value=True)) mask = is_nan | first_after_nan # 过滤得到结果 result_df = df[mask]
结果验证
输出result_df['Ai']即可得到预期结果:
0 25.0 3 NaN 4 12.0 7 NaN Name: Ai, dtype: float64
内容的提问来源于stack exchange,提问作者Qwerty992
相关产品推荐
相关产品推荐

