Python 关于numpy/nan的困惑 将熊猫作为pd导入 输入io x=“”a,b ,bb 2. ,,""" df=pd.read\U csv(io.StringIO(x)) 打印(df) a b 0南bb 1.2.0 NaN 2楠楠楠 打印([[type(uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu [float,float,float][str,float,float]] 打印([set(df[])用于df中的[uuu]) [{nan,nan,2.0},{nan,'bb'}]

Python 关于numpy/nan的困惑 将熊猫作为pd导入 输入io x=“”a,b ,bb 2. ,,""" df=pd.read\U csv(io.StringIO(x)) 打印(df) a b 0南bb 1.2.0 NaN 2楠楠楠 打印([[type(uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu [float,float,float][str,float,float]] 打印([set(df[])用于df中的[uuu]) [{nan,nan,2.0},{nan,'bb'}],python,pandas,numpy,nan,Python,Pandas,Numpy,Nan,正如您所看到的,所有nans都是浮点数,但是set(df.b)给出了唯一的值。而a列中的两个nan似乎不同。为什么? 此外,以下差异的原因是什么 [在df.a中为uu键入(u)) Out[370]:[float,float,float] [范围内i的类型(df.a[i])(len(df.a))] Out[371]:[numpy.float64,numpy.float64,numpy.float64] 它们是不同的(虽然都是float类型,但是不同的类) [在df.b中为uu键入(u)) Out

正如您所看到的,所有
nan
s都是浮点数,但是
set(df.b)
给出了唯一的值。而
a
列中的两个
nan
似乎不同。为什么?

此外,以下差异的原因是什么

[在df.a中为uu键入(u))
Out[370]:[float,float,float]
[范围内i的类型(df.a[i])(len(df.a))]
Out[371]:[numpy.float64,numpy.float64,numpy.float64]
它们是不同的(虽然都是float类型,但是不同的类)

[在df.b中为uu键入(u))
Out[374]:[str,float,float]
[范围内i的类型(df.b[i])(len(df.b))]
Out[373]:[str,float,float]

它们都是一样的

它看起来像是一个裸体的东西,而不仅仅是熊猫。当数据类型为
object
时,
nan
检查与数据类型为
float
时不同。Pandas显示不区分字符串、python
nan
np.nan
值。在包含字符串的列中,
dtype
是对象,
nan
是python浮点。另一列是
np.float
dtype数组。@hpaulj python是否有内置的
nan
?输入
nan
引发
name错误:未定义名称“nan”
float('nan')
生成此对象;它通常没有自己的python名称
np.nan
创建相同的东西。但是请记住,
nan
不等于任何东西,甚至不等于它本身。所以测试它是很棘手的<代码>np.isnan帮助
pandas
具有更强大/通用的工具,用于测试和替换
nan
(以及类似的值)。