忽略NaN的列表理解

时间:2018-02-22 22:35:33

标签: python pandas

我试图构建一个列表理解,它有条件不导入nan值,但没有运气。下面是当前代码以及结果输出。什么条件将从列表中删除nans?

def generate_labels(filtered_df, columnName):
    return[
        {'label': i, 'value': i} for i in 
        filtered_df[columnName].unique() 
    ]

generate_labels(df, 'Region')


#Output  


[{'label': 'Americas', 'value': 'Americas'},
     {'label': 'EMEA', 'value': 'EMEA'},
     {'label': nan, 'value': nan},
     {'label': 'APAC ', 'value': 'APAC '}]

2 个答案:

答案 0 :(得分:4)

def generate_labels(filtered_df, columnName):
    return[
        {'label': i, 'value': i} for i in filtered_df[columnName].dropna().unique() 
    ]

答案 1 :(得分:1)

您可以在列表推导表达式中添加条件。类似的东西:

import math

def generate_labels(filtered_df, columnName):
    return[
        {'label': i, 'value': i} for i in 
        filtered_df[columnName].unique() 
        if not math.isnan(i)
    ]

您可以通过多种方式检查值是否为nan。如果您愿意,也可以使用numpy版本。