我有一个DataFrame:
>>> df
STK_ID EPS cash
STK_ID RPT_Date
601166 20111231 601166 NaN NaN
600036 20111231 600036 NaN 12
600016 20111231 600016 4.3 NaN
601009 20111231 601009 NaN NaN
601939 20111231 601939 2.5 NaN
000001 20111231 000001 NaN NaN
Run Code Online (Sandbox Code Playgroud)
然后我只想要那些EPS不是NaN,df.drop(....)即将返回数据帧的记录,如下所示:
STK_ID EPS cash
STK_ID RPT_Date
600016 20111231 600016 4.3 NaN
601939 20111231 601939 2.5 NaN
Run Code Online (Sandbox Code Playgroud)
我怎么做?
在Python Pandas中,检查DataFrame是否具有一个(或多个)NaN值的最佳方法是什么?
我知道函数pd.isnan,但是这会为每个元素返回一个布尔数据框架.这篇文章也没有完全回答我的问题.
我只是在Firefox的JavaScript控制台中尝试过,但以下两个语句都没有返回true:
parseFloat('geoff') == NaN;
parseFloat('geoff') == Number.NaN;
Run Code Online (Sandbox Code Playgroud) 是否有可能以某种方式返回0而不是NaN在JavaScript中解析值时?
如果空字符串parseInt返回NaN.
是否可以在JavaScript中执行类似的操作来检查NaN?
var value = parseInt(tbb) == NaN ? 0 : parseInt(tbb)
Run Code Online (Sandbox Code Playgroud)
或者可能有另一个函数或jQuery插件可能做类似的事情?
为什么NaN值的比较与所有其他值的行为不同?也就是说,与运算符==,<=,> =,<,>的所有比较(其中一个或两个值为NaN)返回false,这与所有其他值的行为相反.
我想这可以通过某种方式简化数值计算,但我找不到明确说明的理由,甚至在Kahan 的IEEE 754状态讲义中也没有详细讨论其他设计决策.
这种异常行为在进行简单数据处理时会造成麻烦.例如,当在C程序中对某些实值字段的记录列表进行排序时,我需要编写额外的代码来处理NaN作为最大元素,否则排序算法可能会变得混乱.
编辑: 迄今为止的答案都认为比较NaNs毫无意义.
我同意,但这并不意味着正确的答案是错误的,而是一个非布尔值(NaB),幸运的是它不存在.
因此,在我看来,选择返回真或假的比较是任意的,对于一般数据处理,如果它遵循通常的定律(==的反射性,<= =,>的三分法),那将是有利的,以免数据结构依赖这些法律变得困惑.
因此,我要求打破这些法律的一些具体优势,而不仅仅是哲学推理.
编辑2: 我想我现在理解为什么使NaN最大化是一个坏主意,它会搞砸上限的计算.
可能需要NaN!= NaN以避免检测环路中的收敛,例如
while (x != oldX) {
oldX = x;
x = better_approximation(x);
}
Run Code Online (Sandbox Code Playgroud)
然而,最好通过比较绝对差异与小限制来编写.所以恕我直言,这是打破NaN反身性的一个相对弱的论据.
我有一个〜300K行和~40列的数据帧.我想知道是否有任何行包含空值 - 并将这些'null'行放入一个单独的数据帧中,以便我可以轻松地探索它们.
我可以明确地创建一个掩码:
mask = False
for col in df.columns:
mask = mask | df[col].isnull()
dfnulls = df[mask]
Run Code Online (Sandbox Code Playgroud)
或者我可以这样做:
df.ix[df.index[(df.T == np.nan).sum() > 1]]
Run Code Online (Sandbox Code Playgroud)
是否有一种更优雅的方式(找到包含空值的行)?
是否可以NaN在Python中设置数组元素?
另外,是否可以将变量设置为+/-无穷大?如果是,是否有任何功能来检查数字是否无穷大?
我想弄清楚如何从我的数组中删除nan值.它看起来像这样:
x = [1400, 1500, 1600, nan, nan, nan ,1700] #Not in this exact configuration
Run Code Online (Sandbox Code Playgroud)
我对python比较陌生,所以我还在学习.有小费吗?