Pandas如何处理关键词nan和None?

ffscu2ro  于 2022-12-09  发布在  其他
关注(0)|答案(2)|浏览(140)
import pandas as pd
import numpy as np

a = {np.nan: -1, None: 1}

看一下a

{nan: -1, None: 1}

如果我们将它从Series转换回dict:

pd.Series(a).to_dict()

我们看到:

{nan: -1, nan: 1}

Pandas如何用两个 * 相同 * 的键创建dict呢?嗯,我猜它们实际上并不相同,因为np.nan == np.nan的值为False。但是我不能用以下命令手动创建它:

b = {np.nan: -1, np.nan: 1}

如果我们看一下b,它给出:

{nan: 1}

我在想这件事,也许我错过了什么明显的东西?
有关完整的代码片段,请参见图片

这也表明我可以不断地将关键字np.nan添加到从pandas系列生成的dict to_dcit中,但不能添加到手动创建的dict中

zd287kbt

zd287kbt1#

这跟float("nan")内部有些关系,看一看:

In [24]: s = pd.Series({np.nan: -1, None: 1})
    ...: d = s.to_dict()

In [25]: d
Out[25]: {nan: -1, nan: 1}

In [26]: [type(k) for k in d.keys()]
Out[26]: [<class 'float'>, <class 'float'>]

In [27]: d[float("nan")] = 3

In [28]: d
Out[28]: {nan: -1, nan: 1, nan: 3}

In [29]: d[np.nan] = 100

In [30]: d
Out[30]: {nan: -1, nan: 1, nan: 3, nan: 100}

In [31]: d[np.nan] = 1000

In [32]: d
Out[32]: {nan: -1, nan: 1, nan: 3, nan: 1000}

相关问题