如何从numpy.ndarray中删除Nan值

时间:2019-11-11 08:10:26

标签: python python-3.x nan numpy-ndarray

我有一些numpy.ndarray变量。它们包括nan值,我想从中删除每个nan值。数组包含int,float,str等值。这些数组的示例:

['A' 'B' 'C' 'D' nan 'E' 'F']

另一个:

[nan  1.]

在某些情况下,数组可能包含float,str和nan值。在这种情况下,如何只删除nan值?

我使用了以下代码:

x[:, ~np.isnan(x).any(axis=0)]

并出现以下错误:

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''

2 个答案:

答案 0 :(得分:0)

熊猫中有一个名为pandas.DataFrame.dropna的函数,该函数会删除所有具有nan值的列。否则,只需创建DataFrame,然后执行df.dropna()

答案 1 :(得分:0)

这可能是因为np.isnan()无法处理集合中可能的元素类型中的字符串类型。您可以尝试使用panda's isnull()删除NaN的值。

import pandas as pa
import numpy as np

a = ['A', np.nan, np.nan, 1.67, 8]
a = [x for x in a if not pa.isnull(x)]
print(a)