用NaN替换字典的空值

use*_*906 4 python dictionary missing-data

我有一个缺少值的字典(密钥在那里,但相关的值是空的).例如,我想要下面的字典:

dct = {'ID':'', 'gender':'male', 'age':'20', 'weight':'', 'height':'5.7'}
Run Code Online (Sandbox Code Playgroud)

要改为这种形式:

dct = {'ID':NaN, 'gender':'male', 'age':'20', 'weight':NaN, 'height':'5.7'}
Run Code Online (Sandbox Code Playgroud)

我怎样才能以最省时的方式写出来呢?

use*_*203 9

您可以使用字典理解.另外正如评论中所指出的那样,dict用Python 命名是不好的做法:

dct = {'ID':'', 'gender':'male', 'age':'20', 'weight':'', 'height':'5.7'}
dct = {k: None if not v else v for k, v in dct.items() }
print(dct)
Run Code Online (Sandbox Code Playgroud)

输出:

{'ID': None, 'gender': 'male', 'age': '20', 'weight': None, 'height': '5.7'}
Run Code Online (Sandbox Code Playgroud)

只需替换None为您想要的任何默认值.

在您的问题中,您想要替换为NaN.

您可以使用以下任何一种方法:

float('nan') 如果你使用的是Python 2.x,或者使用Python <3.5

math.nan 适用于Python 3.5+

numpy.nan 运用 numpy

  • 值得注意的是,这将替换所有"falsey"值,因此它将按预期在空字符串上工作,但如果某些字典值实际上是"None"或"0"或"False"或某些其他此类值,则可能没有期望的效果. (2认同)