Pandas 如何跳过python中缺失的NaN值,同时替换它们?

Pandas 如何跳过python中缺失的NaN值,同时替换它们?,pandas,numpy,matplotlib,scikit-learn,linear-regression,Pandas,Numpy,Matplotlib,Scikit Learn,Linear Regression,我希望能够在维护NaN值的列表上运行numpy命令。基本上,我想对两个列表变量进行线性回归。一个变量包含NaN,所以我不能对它进行线性回归。但是,如果删除NaN值,则列表的大小与不包含NaN的列表的大小不匹配。比如说, x=[1,2,3,4,5,NaN] 如果删除NaN值,则x的大小变为5 y=[1,2,3,4,5,6] y的大小为6 (x,y)=(1,1)、(2,2)、(3,3)、(4,4)、(5,5)、(NaN,6) 我希望我的线性回归跳过数据点(NaN,6) 如何执行此操作?您需要根据条件

我希望能够在维护NaN值的列表上运行numpy命令。基本上,我想对两个列表变量进行线性回归。一个变量包含NaN,所以我不能对它进行线性回归。但是,如果删除NaN值,则列表的大小与不包含NaN的列表的大小不匹配。比如说,

x=[1,2,3,4,5,NaN]
如果删除NaN值,则
x
的大小变为5
y=[1,2,3,4,5,6]
y
的大小为6

(x,y)=(1,1)、(2,2)、(3,3)、(4,4)、(5,5)、(NaN,6)

我希望我的线性回归跳过数据点(NaN,6)


如何执行此操作?

您需要根据条件筛选两个数组,而不仅仅是其中一个

import numpy as np
x = np.array([1,2,np.NaN,4,5,np.NaN])
y = np.array([1,2,3,4,5,6])

condition = ~np.isnan(x)
xp = x[condition]
yp = y[condition]

print(xp)
print(yp)

因此,两个数组都打印为
[1 2 4 5]

这里有一个正确的答案,它处理NaN值和字符串

def skipNaN(x, y):
    x = np.array(x)
    y = np.array(y)

    condition1 = np.array([isNumber(i) and isNumber(j) for i,j in zip(x,y)])

    x = x[condition1].astype('float64')
    y = y[condition1].astype('float64')

    condition2 = ~np.isnan(x)
    x = x[condition2].astype('float64')
    y = y[condition2].astype('float64')

    return[x,y]

a=np.array([(1,1),(2,2),(3,3),(4,4),(5,5),(np.nan,6)])然后a[~np.any(np.isnan(a),axis=1)]如果数组中有字符串,这将不起作用。例如,如果x是
np.array([1,2,np.NaN,4,5,'helloworld'])
,该怎么办。这段代码将无法删除该字符串。我怎样才能解决字符串的问题呢?参见