我有一个包含一列列表的数据框,这些列表也包含空列表和包含“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']]
抱歉没有提供详细结果,因为这是为了正式工作
您应该使用嵌套列表理解:
[[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']]