假设有如下数据:
x=["hello","world",None]
xx=pd.DataFrame(x)
xx
数据如下:
可以看到,第2行第1列没有数据,是空None
。可是如果我们的数据有10万行,那我们就不知道有没有缺失值了。当有缺失值的时候,99%的后续处理都会不经意报错,让你丈二和尚摸不着头脑,不知道是哪里报错了,所以千万要尽早解决。
判断方法如下:
xx.isnull()
#或者
xx==None
结果如下:
可以看到isnull()
会返回一个和原来xx
形状(shape)一样的dataframe,里面的每一个值表示原来对应位置是否为None
。但是,当数据10万多行的时候,我们仍然可能看不到是否有元素为True
,这个时候,和numpy中一样,可以用any()
。
xx.isnull().any()
结果如下:
如果想知道是为None
元素的下标那怎么办呢?可以使用numpy中的方法。
我们先将xx.isnull()
保存下来,转化成数值型0或1。
b=xx.isnull()
b[b==True]=1
b
即:
然后
#转成numpy数组,否则argwhere会报错。
bb=np.array(b)
np.argwhere(bb==1)
最终得到的精确下标如下: