df.isnull使用细节

本文介绍了使用Python的Pandas库处理DataFrame中缺失值的方法。通过示例代码展示了如何识别和筛选包含NaN的数据,对比了np.array与DataFrame在布尔索引处理上的不同表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码如下所示:
df=pd.DataFrame(np.random.randn(5,5),columns=list('abcde'))
df['g']=np.nan
df['h']=np.nan
df.ix[0,'g']=10
print(df.isnull())
print(df.isnull().values)#去掉values其结果也是一样的,返回类型为series
print(df.values[df.isnull().values==True])#true可以去掉

print(df[df.isnull().values==True])#可以去掉

结果输出:


结论:np.array格式与df格式对布尔型的索引的处理方式完全不同,np.array格式直接将true位置上的元素返回,并返回一个list类型;而df对每一个true索引都会返回一行,如果一行有多个true,则会将该行返回多次,最终返回一个dataframe,最终结果就容易出现很多完全重复的行;总的来讲,有多少个True就会返回多少行;本人推测df的机制就这样的:每一行的布尔索引会一个一个的去检查,如果出现true,返回该行,所以该行有多少个true就返回多少行;更深层次的推测,就是df其实是按一维索引来返回行的,df只判断是否返回行,所以当索引为二维时,其每一行索引的值都是用来判断是否返回该行;

print(df[[True,False,True,False,True]])#如果用df.a>某值,其返回的结果结构一样也是一个布尔型索引

#print(df[pd.Series([True,False,True,False,True])])等价于上面语句

其结果返回三行分别为:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值