当前位置: 首页 > 面试题库 >

Python Pandas:如何删除nan和-inf值

司空丰
2023-03-14
问题内容

我有以下数据框

           time       X    Y  X_t0     X_tp0  X_t1     X_tp1  X_t2     X_tp2
0         0.002876    0   10     0       NaN   NaN       NaN   NaN       NaN
1         0.002986    0   10     0       NaN     0       NaN   NaN       NaN
2         0.037367    1   10     1  1.000000     0       NaN     0       NaN
3         0.037374    2   10     2  0.500000     1  1.000000     0       NaN
4         0.037389    3   10     3  0.333333     2  0.500000     1  1.000000
5         0.037393    4   10     4  0.250000     3  0.333333     2  0.500000

....
1030308   9.962213  256  268   256  0.000000   256  0.003906   255  0.003922
1030309  10.041799    0  268     0      -inf   256  0.000000   256  0.003906
1030310  10.118960    0  268     0       NaN     0      -inf   256  0.000000

我尝试了以下

df.dropna(inplace=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.40)

X_train = X_train.drop('time', axis=1)
X_train = X_train.drop('X_t1', axis=1)
X_train = X_train.drop('X_t2', axis=1)
X_test = X_test.drop('time', axis=1)
X_test = X_test.drop('X_t1', axis=1)
X_test = X_test.drop('X_t2', axis=1)
X_test.fillna(X_test.mean(), inplace=True)
X_train.fillna(X_train.mean(), inplace=True)
y_train.fillna(y_train.mean(), inplace=True)

但是,ValueError: Input contains NaN, infinity or a value too large for dtype('float32').每当我尝试拟合回归模型时 ,我仍然会收到此错误fit(X_train, y_train)

我们如何同时删除NaN-inf值?


问题答案:

使用pd.DataFrame.isin并检查带有的行pd.DataFrame.any。最后,使用布尔数组对数据帧进行切片。

df[~df.isin([np.nan, np.inf, -np.inf]).any(1)]

             time    X    Y  X_t0     X_tp0   X_t1     X_tp1   X_t2     X_tp2
4        0.037389    3   10     3  0.333333    2.0  0.500000    1.0  1.000000
5        0.037393    4   10     4  0.250000    3.0  0.333333    2.0  0.500000
1030308  9.962213  256  268   256  0.000000  256.0  0.003906  255.0  0.003922


 类似资料:
  • 我想弄清楚如何从我的数组中删除nan值。我的数组看起来像这样: 如何从中删除值?

  • 我有这个,并且只需要列不是的记录: ...即。类似于的内容,以获取结果数据规则: 我该怎么做?

  • 我想删除列为空/nan的所有行。做这件事的有效方法是什么?

  • 问题内容: 我有一个csv文件。我读了: 它的输出如下: 我想删除列为空/ NaN的所有行。什么是有效的方法? 问题答案: 使用带有参数的指定检查列S: 用另一种解决方案和: 另一种选择: 时机

  • 我正在获取此错误堆栈跟踪 我可以简单地在我的Proguard配置上使用选项来使其工作(没有签名验证错误)。但是,由于这个JAR的大小相当大(4MB),所以我想实际针对这个特定的bcprov-jdk15on.JAR使用它 是否有方法使用maven-assembly-plugin来依赖项jar? 谢谢你。

  • 本文向大家介绍Python 实现将numpy中的nan和inf,nan替换成对应的均值,包括了Python 实现将numpy中的nan和inf,nan替换成对应的均值的使用技巧和注意事项,需要的朋友参考一下 nan:not a number inf:infinity;正无穷 numpy中的nan和inf都是float类型 t!=t 返回bool类型的数组(矩阵) np.count_nonzero(