从列表列中删除 nan

问题描述 投票:0回答:1

我有一个包含一列列表的数据框,这些列表也包含空列表和包含“nan”的值的列表。我需要删除 nan 并创建另一列,其中包含每个单元格列表中值的总数。

data = {'Value_count': [0, 2, 2, 2],
    'Risk Rating': [[], ['No Risk', np.nan], ['Medium', 'No Risk/Not Rated'], ['High', 'NaN']]}

我首先尝试了以下代码来删除nans

def remove_nan_from_list(lst):
    return [item for item in lst if not pd.isna(item)]

df['Risk Rating'] = df['ListColumn'].apply(remove_nan_from_list)

但它即将出现的字符串列表,例如 [['N', 'o', '', 'R', 'i', 's', 'k']]

抱歉没有提供详细结果,因为这是为了正式工作

python pandas nan
1个回答
0
投票

您应该使用嵌套列表理解:

[[x for x in lst if not pd.isna(x)] for lst in df['Risk Rating']]

输出:

[[], ['No Risk'], ['Medium', 'No Risk/Not Rated'], ['High', 'NaN']]
© www.soinside.com 2019 - 2024. All rights reserved.