给定一个包含分散在各处的可能NaN值的数据帧:
问题:如何确定哪些列包含NaN值?特别是,我可以得到包含NaN的列名列表吗
更新:使用熊猫0.22.0
较新版本有新方法“DataFrame.isna()”和“DataFrame.notna()”
[71]on
:df
Output[71]:
a、b、c
0.7.0
1 0.0 NaN 4
2.0南4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
At[72]on:df.isna().any()
Output[72]:
真实的
b是的
c错误
数据类型:bool
作为列列表:
[74]on
:df.columns[df.isna().any()].tolist()
Out[74]:[a',b']
要选择这些列(至少包含一个NaN值):
[73]on
:df.loc[:,df.isna().any()]
Output[73]:
a b
0.7.0
10.0南
2.0南
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0
旧答案:
尝试使用isnull():
[97]on
:df
Output[97]:
a、b、c
0.7.0
1 0.0 NaN 4
2.0南4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
At[98]on:pd.isnull(df.sum()>;0
Output[98]:
真实的
b是的
c错误
数据类型:bool
或作为@root建议的更清晰版本:
[5]on
:df.isnull().any()
Output[5]:
真实的
b是的
c错误
数据类型:bool
At[7]on:df.columns[df.isnull().any()].tolist()
Out[7]:[a',b']
要选择子集-至少包含一个NaN值的所有列:
[31]on
:df.loc[:,df.isnull().any()]
Output[31]:
a b
0.7.0
10.0南
2.0南
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0