我有一个Pandas Dataframe,如下所示:
1 2 3
0 a NaN read
1 b l unread
2 c NaN read
Run Code Online (Sandbox Code Playgroud)
我想用空字符串删除NaN值,以便它看起来像这样:
1 2 3
0 a "" read
1 b l unread
2 c "" read
Run Code Online (Sandbox Code Playgroud) 我有一个简单的问题(我希望!).在JS中,为什么isNaN(" ")评估为false,但false评估为true?
我正在对文本输入字段执行数值运算,并检查字段是否为空,""或NaN.当有人在场中输入少量空格时,我的验证在所有三个空格中都失败了,我很困惑为什么它超过了isNAN检查.
谢谢!
我只是在研究OCPJP问题,我发现了这个奇怪的代码:
public static void main(String a[]) {
System.out.println(Double.NaN==Double.NaN);
System.out.println(Double.NaN!=Double.NaN);
}
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,我得到了:
false
true
Run Code Online (Sandbox Code Playgroud)
false当我们比较两个看起来彼此相同的东西时,输出结果如何?什么NaN意思?
只是出于好奇.
typeof NaN数字似乎不合逻辑.顺便说一句,就像NaN === NaN或NaN == NaN返回虚假一样.这是javascript的特点之一,还是有理由这样做?
编辑:谢谢你的回答.尽管让人们感到高兴并不容易.阅读答案和维基我理解得更多,但仍然是一句话
与NaN进行比较时,即使与自身进行比较,也会返回无序结果.比较谓词是信令或非信令,信令版本表示这种比较的无效例外.等式和不等式谓词是非信令的,因此x = x返回false可用于测试x是否是安静的NaN.
只是让我头晕目眩.如果有人能用人类(而不是数学家)的可读语言翻译,我会感激不尽.
首先,我要提一提,我知道如何isNaN()和Number.isNaN()工作.我正在阅读David Flanagan的The Definite Guide,他给出了一个如何检查值是否为例子的例子NaN:
x !== x
Run Code Online (Sandbox Code Playgroud)
这将导致true当且仅当x是NaN.
但现在我有一个问题:他为什么要使用严格的比较?因为它似乎
x != x
Run Code Online (Sandbox Code Playgroud)
表现方式相同.是否可以安全使用的两个版本,或我很想念在JavaScript中的一些值(S),将返回true的x !== x和false为x != x?
我熟悉的NaN是在JavaScript中“怪异”的,即NaN === NaN总是返回false,如所描述这里。因此,不应通过===比较来检查NaN,而应使用 isNaN(..) 。
所以我惊讶地发现
> [NaN].includes(NaN)
true
Run Code Online (Sandbox Code Playgroud)
这似乎不一致。为什么会有这种行为?
它是如何工作的?请问includes方法专门检查isNaN?
我有一个大概用实数填充的pandas DataFrame,但它中也有一些nan值.
如何nan用平均列替换s?
这个问题与这个问题非常相似:numpy数组:用列的平均值替换nan值, 但不幸的是,给出的解决方案不适用于pandas DataFrame.
我有一个DataFrame,其列中包含许多缺失值,我希望将其分组:
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': ['1', '2', '3'], 'b': ['4', np.NaN, '6']})
In [4]: df.groupby('b').groups
Out[4]: {'4': [0], '6': [2]}
Run Code Online (Sandbox Code Playgroud)
看到Pandas已经删除了具有NaN目标值的行.(我想要包含这些行!)
由于我需要很多这样的操作(许多cols都缺少值),并且使用比中位数(通常是随机森林)更复杂的函数,我想避免编写太复杂的代码片段.
有什么建议?我应该为此编写一个函数还是有一个简单的解决方案?
相关的IEEE标准定义了一个数字常量NaN(不是数字),并规定NaN应该比较为不等于它自己.这是为什么?
我熟悉的所有语言都实现了这个规则.但它经常会导致严重的问题,例如当NaN存储在容器中时,NaN存在于正在排序的数据中等时的意外行为等.更不用说,绝大多数程序员都希望任何对象都等于自身(在他们了解NaN之前,令人惊讶的是他们增加了错误和混乱.
IEEE标准经过深思熟虑,因此我确信NaN的比较与其本身相同是很糟糕的.我只是想不通它是什么.
给定一个pandas数据帧,其中包含(可能)NaN值分散在这里和那里:
问题:如何确定哪些列包含NaN值?特别是,我可以获得包含NaN的列名列表吗?
谢谢