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

如何用loc方法仅删除Name和Age列均为NaN的DataFrame行

解决Pandas中仅删除Name和Age同时为NaN的行的问题

你当前的代码逻辑是保留Name和Age都不为NaN的行,这就导致像第三行这种只有Name为NaN、Age正常的行也被误删了。要实现仅删除「Name和Age同时为NaN」的行,只需要反向筛选——排除掉这两列同时为空的行即可。

用loc实现的正确代码如下:

import pandas as pd
import numpy as np

data = [['tom', 10, 'male'], ['nick', 15, 'male'], [np.nan, 16, 'male'], [np.nan, np.nan, 'female']]
# 新增一组两列同时为NaN的测试数据,方便验证效果

df = pd.DataFrame(data, columns=['Name', 'Age', 'sex'])
# 筛选条件:排除Name和Age同时为NaN的行
df_new = df.loc[~((df['Name'].isna()) & (df['Age'].isna()))]

print(df_new)

逻辑说明:

  • df['Name'].isna() & df['Age'].isna():判断每行是否满足Name和Age同时为NaN,返回布尔值数组
  • 前面加~表示取反,也就是保留「不满足两列同时为NaN」的所有行
  • 用loc包裹这个条件,就能精准筛选出符合要求的行,不会误删仅单一列为NaN的记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 01:07:04