gpt4 book ai didi

python - Pandas:使用 np.nan 选择 NaN 值

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:05 24 4
gpt4 key购买 nike

所以我发现 float NaN 显然是 doesn't equal itself .我的问题是如何处理它。让我们从一个数据框开始:

DF = pd.DataFrame({'X':[0, 3, None]})
DF
X
0 0.0
1 3.0
2 NaN

DF['test1'] = np.where(DF['X'] == np.nan, 1, 0)
DF['test2'] = np.where(DF['X'].isin([np.nan]), 1, 0)
DF
X test1 test2
0 0.0 0 0
1 3.0 0 0
2 NaN 0 1

所以 test1 和 test2 不一样。许多其他人提到我们应该使用 pd.isnull()。我的问题是,只使用 isin() 是否安全?例如,如果我需要使用 np.where 创建一个新列,我可以简单地做:

DF['test3'] = np.where(DF['X'].isin([0, np.nan]), 1, 0)

或者我应该总是像这样使用 pd.isnull:

DF['test3'] = np.where((DF['X'] == 0) | (pd.isnull(DF['X'])), 1, 0)

最佳答案

如果您怀疑可能存在 nan,则应始终使用 pd.isnullnp.isnan

例如,假设您有一个 object-dtype 列(不幸的是,这些并不少见):

     X
0 a
1 3
2 NaN

然后使用 isin 不会给你正确的结果:

>>> df['X'].isin([np.nan])
0 False
1 False
2 False
Name: X, dtype: bool

虽然 isnull 仍然可以正常工作:

>>> df['X'].isnull()
0 False
1 False
2 True
Name: X, dtype: bool

鉴于 Series.isin 中未明确提及 NaN 支持也不DataFrame.isin它可能只是一个实现细节,它正确地“找到”了 NaN。实现细节总是不好依赖。他们可以随时改变...

除此之外,明确说明总是有好处的。明确的 isnullisnan 检查应该(在我看来)是首选。

关于python - Pandas:使用 np.nan 选择 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46305837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com