Hypothetical Ninja
Hypothetical Ninja

Reputation: 4077

Getting rid of 'nan' from list value of dictionary , python

I have this 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'}

It has one key, extracted_layout and its values are in a list that is stuffed with nans . How do I get rid of them?

Upvotes: 2

Views: 2570

Answers (2)

Yagmur SAHIN
Yagmur SAHIN

Reputation: 325

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

Upvotes: 0

falsetru
falsetru

Reputation: 369304

If nan is float nan, use math.isnan to filter it out:

>>> 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))
]

Upvotes: 5

Related Questions