【问题标题】:finding and replacing 'nan' with a number查找并用数字替换“nan”
【发布时间】:2016-02-03 02:30:46
【问题描述】:

我想替换数组中的数字 3 而不是所有的 'nan'。这是我的代码:

train= train.replace("nan",int(3))

但我的数组没有任何变化。你能指导我吗?

【问题讨论】:

  • 旁白:print(type(train)) 返回什么?列表和 numpy ndarrays 都没有 replace 方法,所以我不确定你为什么没有收到 AttributeError。 train是熊猫系列吗?
  • 跟进@DSM 的评论,如果train 是pandas 数据框或系列,则有一个fillna() 方法可以处理这种情况。

标签: python numpy import


【解决方案1】:

你可以使用np.isnan:

import numpy as np
train = np.array([2, 4, 4, 8, 32, np.NaN, 12, np.NaN]) 
train[np.isnan(train)]=3
train

输出:

array([  2.,   4.,   4.,   8.,  32.,   3.,  12.,   3.])

【讨论】:

    【解决方案2】:
    >>> import math
    >>> train = [10, float('NaN'), 20, float('NaN'), 30]
    >>> train = [3 if math.isnan(x) else x for x in train]
    >>> train
    [10, 3, 20, 3, 30]
    

    【讨论】:

      猜你喜欢
      • 2011-10-05
      • 2013-07-10
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多