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

如何删除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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:18:01