熊猫、numpy.where()和numpy.nan

我想使用numpy.where()向pandas.DataFrame添加一列。我想对条件为假的行使用 NaN 值(以指示这些值“缺失”)。

考虑:

>>> import numpy; import pandas
>>> df = pandas.DataFrame({'A':[1,2,3,4]}); print(df)
   A
0  1
1  2
2  3
3  4
>>> df['B'] = numpy.nan
>>> df['C'] = numpy.where(df['A'] < 3, 'yes', numpy.nan)
>>> print(df)
   A   B    C
0  1 NaN  yes
1  2 NaN  yes
2  3 NaN  nan
3  4 NaN  nan
>>> df.isna()
       A     B      C
0  False  True  False
1  False  True  False
2  False  True  False
3  False  True  False

为什么B显示“NaN”而C显示“nan”?为什么DataFrame.isna()无法检测到 C 中的 NaN 值?

我应该在什么地方使用 numpy.nan 以外的东西?None并且pandas.NA两者似乎都可以工作并且可以被 DataFrame.isna() 检测到,但我不确定这些是最佳选择。

谢谢!

编辑:根据@Tim Roberts 和@DYZ,numpy.where 返回一个字符串类型的数组,因此在 numpy.NaN 上调用 str 构造函数。C列中的值实际上是字符串“nan”。然而,问题仍然存在:这里最优雅的事情是什么?我应该使用None吗?或者是其他东西?

以上是熊猫、numpy.where()和numpy.nan的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>