在列表列表中替换 nan

replace nan in list of list

我正在尝试从列表中替换 nan。我已经尝试过这些解决方案。

但是,我收到以下错误:TypeError: ufunc 'isnan' 不支持输入类型,并且无法根据转换将输入安全地强制转换为任何受支持的类型

list_of_lists=[[1,2,3],['nan','nan','nan'],[3,4,5]]

我想用类似“replaced”的字符串替换 nan 并期望:

list_of_lists=[[1,2,3],['replaced','replaced','replaced'],[3,4,5]]

感谢帮助

您将 nan 表示为字符串,这不是正确的表示形式, 您可以使用 float('nan')math.nan 无论如何,考虑到这件事,你可以这样做:

>> from math import nan, isnan
>> list_of_lists=[[1,2,3],[nan, nan, nan],[3,4,5]]
>> [['replaced' if isnan(i) else i for i in j ] for j in list_of_lists]

输出:

[[1, 2, 3], ['replaced', 'replaced', 'replaced'], [3, 4, 5]]

这是一种非常简单的方法。

new_list = [y.replace('nan','replace') if y == 'nan' else y for x in list_of_lists for y in x  ]

输出

[1, 2, 3, 'replace', 'replace', 'replace', 3, 4, 5]