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

基于NaN条件筛选Pandas DataFrame行:生成df2与df3

Pandas筛选指定列全为NaN的行

输入DataFrame

name    value1  value2  value3  value4  value5 value6   value7  value8  value9
0   58390   28.4    32.2    31.3    30.6    40.7    40.0    39.6    40.10   NaN
1   58395   31.4    32.8    31.5    31.9    NaN NaN NaN 38.60   NaN
2   67488   NaN NaN NaN 26.6    NaN NaN NaN 34.90   NaN
3   67490   NaN NaN NaN 29.9    NaN NaN NaN 39.65   NaN
4   67501   NaN NaN NaN 20.5    NaN NaN NaN 27.10   NaN

解决方案代码

import pandas as pd

# 生成df2:保留value1、value2、value3均为NaN的行
df2 = df[df[['value1', 'value2', 'value3']].isna().all(axis=1)]
df2 = df2.reset_index(drop=True)  # 重置索引匹配预期输出格式

# 生成df3:保留value5、value6、value7均为NaN的行
df3 = df[df[['value5', 'value6', 'value7']].isna().all(axis=1)]
df3 = df3.reset_index(drop=True)

代码逻辑说明

  • df[列名列表].isna():生成布尔DataFrame,标记对应位置是否为缺失值(NaN)
  • .all(axis=1):按行校验,仅当该行指定列全为True(即全是NaN)时返回True
  • 用上述布尔Series筛选原DataFrame,即可得到符合条件的行
  • reset_index(drop=True):重置结果索引,让输出格式与预期一致(可选操作)

预期输出

df2

name    value1  value2  value3  value4  value5 value6   value7  value8  value9
0   67488   NaN NaN NaN 26.6    NaN NaN NaN 34.90   NaN
1   67490   NaN NaN NaN 29.9    NaN NaN NaN 39.65   NaN
2   67501   NaN NaN NaN 20.5    NaN NaN NaN 27.10   NaN

df3

name    value1  value2  value3  value4  value5 value6   value7  value8  value9
0   58395   31.4    32.8    31.5    31.9    NaN NaN NaN 38.60   NaN
1   67488   NaN NaN NaN 26.6    NaN NaN NaN 34.90   NaN
2   67490   NaN NaN NaN 29.9    NaN NaN NaN 39.65   NaN
3   67501   NaN NaN NaN 20.5    NaN NaN NaN 27.10   NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:10:26