注册 登录
编程论坛 Python论坛

菜鸟提问关于缺失值的问题

zhiyong75 发布于 2020-03-12 18:11, 1984 次点击
测试数据如下:
import numpy as np
import pandas as pd
from numpy import nan as NA
x=pd.DataFrame(np.arange(15).reshape(5,3), index=list('defgh'), columns=list('abc'))
x.loc['e']=None
x.loc['f','b']=None

结果如下:
Out[59]:
      a     b     c
d   0.0   1.0   2.0
e   NaN   NaN   NaN
f   6.0   NaN   8.0
g   9.0  10.0  11.0
h  12.0  13.0  14.0

菜鸟的问题:
1. x[x.isnull()],为什么结果都是NaN,而不是只应该e行和f行b列为NaN?
2. 如何取出所有值都是NaN的行?对应上面,就是如何取出e行?
3. 如何取出至少有一个值是NaN的行?对应上面,就是如何取出e和f行?

谢谢大神!
5 回复
#2
wp2319572020-03-12 19:26
1. x[x.isnull()],为什么结果都是NaN,而不是只应该e行和f行b列为NaN?
不是啊:
print(x.isnull())
      a      b      c
d  False  False  False
e   True   True   True
f  False   True  False
g  False  False  False
h  False  False  False
#3
wp2319572020-03-12 19:44
print(x.isnull())   #返回所有NAN  返回值是一个用True False填充的矩阵
print(x.isnull().all(axis=0))  #判断某列是否全NAN
print(x.isnull().all(axis=1))  #判断某行是否是全NAN
print(x.isnull().any(axis=0))  #返回某列是否具备NAN
print(x.isnull().any(axis=1))  #返回某行是否具备NAN
print(np.where(np.isnan(x))) #(array([1, 1, 1, 2], dtype=int32), array([0, 1, 2, 1], dtype=int32))  返回NAN的行列坐标
print(x.index[np.where(np.isnan(x))[0]] ) #Index(['e', 'e', 'e', 'f'], dtype='object')  返回NAN所在的行 索引(名称)
#4
zhiyong752020-03-12 19:46
你说的是x.isnull(),我说的是x[x.isnull()]。
#5
wp2319572020-03-12 19:57
以下是引用zhiyong75在2020-3-12 19:46:37的发言:

你说的是x.isnull(),我说的是x[x.isnull()]。

x.isnull()  返回的是一个矩阵  你用x[]给它包裹 是想表达啥呢
#6
zhiyong752020-03-12 20:09
回复 5楼 wp231957
是的,毫无意义。
1