从字典,python的列表值中删除'nan'

时间:2014-09-05 11:20:24

标签: python list python-2.7 dictionary

我有这本词典:

dict_new = 
{'extracted_layout': [nan, nan, nan, nan, nan, nan, nan, nan, nan, 'shyamanna layout', nan, nan, nan, nan, 'm t s layout', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 'green glen layout', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 'h s r layout', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 'vikas layout', 'annaiah reddy layout', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 'andhra muniyappa layout', nan, nan, nan, nan, nan, 'lake city layout', nan, 'h s r layout'}

它有一个键extracted_layout,其值在一个填充了nans的列表中。我怎么摆脱他们?

2 个答案:

答案 0 :(得分:4)

如果nan为浮动南,请使用math.isnan对其进行过滤:

>>> import math
>>> nan = float('nan')
>>> nan
nan
>>> math.isnan(nan)
True
>>> math.isnan(1)
False

import math

dict_new['extracted_layout'] = [
    x
    for x in dict_new['extracted_layout']
    if not (isinstance(x, float) and math.isnan(x))
]

答案 1 :(得分:0)

list_dict = [{"year": 1916, "age": 10},
        {"year": 1826, "age": 'NaN'},
        {"year": 'NaN', "age": 7}]
for my_dict in list_dict:
    for k in my_dict:
        if isnan(float(my_dict[k])):
            my_dict[k] = 0