Pandas中的isna()和isnull()有什么区别?

101

Pandas有两个方法:isna()isnull()。我通常使用isnull()来检测缺失值,从未遇到过必须使用其他方法的情况。

那么,什么时候应该使用isna()呢?

3个回答

142

isnullisna 的别名。在 pandas 的代码源中,字面意思如此:

isnull = isna

确实:

>>> pd.isnull
<function isna at 0x7fb4c5cefc80>

所以我建议使用isna


5
有推荐要使用哪一个吗?它们中的一个只是传统遗留吗? - peer
5
因为isnullisna的别名,所以我更倾向于使用isna。实际上,isna似乎比isnull更常用。 - qsantos
17
最好只有一种明显的方法来完成它。 - Cai
2
我非常烦恼,因为我们有np.nannp.isnan(),但是pandas却是pd.isna() - Delicious
2
pd.isnull不同于np.isnanpd.isnull(和isna)适用于对象数据类型,并且对于None返回True,因此具有不同的名称是有意义的。 - Marses
显示剩余6条评论

10

它们两个是相同的。作为最佳实践,始终建议优先使用isna()而不是isnull()

很容易记住isna()正在做什么,因为当您查看numpy方法np.isnan()时,它会检查NaN值。在pandas中有其他类似的方法名称,如dropna()fillna(),处理缺失值时始终能帮助您更容易地记住。


pd.isnull()/isna 拥有比 np.isnan 更多的功能和不同的行为;它还可以处理非浮点型数据、检测 None 等。 - Marses

8

两者的文档完全相同。

pandas.isna() : https://pandas.pydata.org/pandas-docs/stable/generated/pandas.isna.html#pandas.isna

pandas.isnull() : https://pandas.pydata.org/pandas-docs/stable/generated/pandas.isnull.html#pandas.isnull

在这里,甚至在“另请参阅”章节中,它说DataFrame.isnull是isna的一个别名。

pandas.DataFrame.isnull(): https://pandas-docs.github.io/pandas-docs-travis/generated/pandas.DataFrame.isnull.html#pandas.DataFrame.isnull

因此,它们一定是相同的东西,就像np.nan,np.NaN,np.NAN一样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接