我有一些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''
答案 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)