python数据集iris.data

已知数据集iris.data,在数据集中的20个随机位置插入np.nan值,选择没有任何nan值的行。

疑问:
一开始随机插入nan值的时候,是对整个iris数据集进行随机插入,可是到后面在选择没有任何nan值的行的时候,只能将数据集的类型从object改成float才能运行,不过这样就结果只有数字没有文本了;如果不改成float类型的话,就不能运行,会显示“
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''”。

请问各位有相应的解决方法吗?非常感谢!

img

img

已解决,将np.isnan改成pd.isna即可

sepallength换成numpy类型的

不考虑效率的话,可装饰np.isnan使其能够处理非数值参数

import numpy as np

def _isnan(lst):
    '''
    lst: 2-dim list
    '''
    res = []
    for i in lst:
        try:
            res.append(np.isnan(i))
        except:
            res_ = []
            for j in i:
                try:
                    res_.append(np.isnan(j))
                except:
                    res_.append(False)
            res.append(res_)
    return np.array(res)

if __name__ == '__main__':
    test_lst = [[1, 2, 3], ['a', np.nan, 3]]
    print(_isnan(test_lst))
    # array([[False, False, False],
    #        [False,  True, False]])