如何从包含字符串条目的列表列表中删除 NaN?

Kus*_*usi 2 python list

我试图从列表列表(带有字符串条目)中删除所有 nan,我的数据如下:

[['beer', 'nuts', nan], 
['beer', 'butter', 'apple'], 
['beer', 'nuts', 'cheese'], 
['beer', 'bananas', nan], 
['beer', 'nuts', 'apple']]
Run Code Online (Sandbox Code Playgroud)

我想得到这个结果:

[['beer', 'nuts'], 
['beer', 'butter', 'apple'], 
['beer', 'nuts', 'cheese'], 
['beer', 'bananas'], 
['beer', 'nuts', 'apple']]
Run Code Online (Sandbox Code Playgroud)

我尝试从(如何从列表列表中删除 nan?[重复] 如何从列表列表中删除 [NaN]?)中得到答案,即:

import math
nan = float('nan')

store_data_list = [[x for x in y if not math.isnan(x)] for y in store_data_list] #remove nans from list of lists

#AND

store_data_list = [xs for xs in store_data_list if not any(math.isnan(x) for x in xs)]

#AND

store_data_list = [[x for x in y if not np.isnan(x)] for y in store_data_list]
Run Code Online (Sandbox Code Playgroud)

两者似乎都不适用于我的实例。我收到错误:

类型错误:必须是实数,而不是字符串

TypeError:输入类型不支持 ufunc 'isnan',并且根据转换规则 ''safe'',无法将输入安全地强制为任何受支持的类型

有人可以指出我做错了什么吗

tom*_*mjn 5

一种选择是将项目与其自身进行比较(这对于 nan 来说是错误的)

nan = float('nan')
data = [['beer', 'nuts', nan], 
        ['beer', 'butter', 'apple'], 
        ['beer', 'nuts', 'cheese'], 
        ['beer', 'bananas', nan], 
        ['beer', 'nuts', 'apple']]
[[i for i in j if i == i] for j in data]
Run Code Online (Sandbox Code Playgroud)

给出

[['beer', 'nuts'],
 ['beer', 'butter', 'apple'],
 ['beer', 'nuts', 'cheese'],
 ['beer', 'bananas'],
 ['beer', 'nuts', 'apple']]
Run Code Online (Sandbox Code Playgroud)