如何在Pandas DataFrame中删除仅含NA值的行?
删除Pandas DataFrame中仅含NA值的行
问题场景
你有如下DataFrame:
| artist | week1 | week2 | week3 | week4 |
|---|---|---|---|---|
| Drake | 2 | 2 | 3 | 1 |
| Muse | NA | NA | NA | NA |
| Bruno Mars | 3 | 3 | 4 | 2 |
| Imagine Dragons | NA | NA | NA | NA |
| Justin Timberlake | 2 | 2 | NA | 1 |
需求是仅删除week1-week4列全为NA的行,保留像Justin Timberlake这种包含部分NA的有效行。
错误原因分析
你之前用的dropna()默认参数是how='any',会删除所有包含至少一个NA的行,这才导致误删了包含部分NA的行,不符合需求。
正确解决方案
使用dropna()时,指定how='all'(仅删除全为NA的行),同时通过subset参数限定只检查数值列(避免artist列的非NA值干扰判断):
import pandas as pd # 假设你的DataFrame变量名为df df = df.dropna(subset=['week1', 'week2', 'week3', 'week4'], how='all')
执行后就能得到你想要的结果:
| artist | week1 | week2 | week3 | week4 |
|---|---|---|---|---|
| Drake | 2 | 2 | 3 | 1 |
| Bruno Mars | 3 | 3 | 4 | 2 |
| Justin Timberlake | 2 | 2 | NA | 1 |
如果数值列是连续排列的,还可以用列索引简化代码,不用手动列所有列名:
df = df.dropna(subset=df.columns[1:], how='all')
内容的提问来源于stack exchange,提问作者KurtosisCobain
相关产品推荐
相关产品推荐

