我正在尝试从列表列表(带有字符串条目)中删除所有 nans,我的数据如下:
[['beer', 'nuts', nan],
['beer', 'butter', 'apple'],
['beer', 'nuts', 'cheese'],
['beer', 'bananas', nan],
['beer', 'nuts', 'apple']]
我想得到这个结果:
[['beer', 'nuts'],
['beer', 'butter', 'apple'],
['beer', 'nuts', 'cheese'],
['beer', 'bananas'],
['beer', 'nuts', 'apple']]
我试过从(How to remove nan's from list of lists? [duplicate] 和 How to delete [NaN] from a list of lists?)中得到答案,即:
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]
两者在我的实例中似乎都不起作用。我收到错误:
TypeError: must be real number, not str
TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
谁能指出我做错了什么
最佳答案
一种选择是将项目与其自身进行比较(这对于 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]
给予
[['beer', 'nuts'],
['beer', 'butter', 'apple'],
['beer', 'nuts', 'cheese'],
['beer', 'bananas'],
['beer', 'nuts', 'apple']]
关于python - 如何从包含字符串条目的列表列表中删除 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57790623/