重命名Pandas中的"None"值

10 投票
1 回答
25386 浏览
提问于 2025-04-18 12:24

这可能看起来很简单,但我就是找不到答案。我使用GeoPandas从一个形状文件导入数据,然后把它转成pandas的DataFrame。里面有一个字段是对象类型,包含三位字母的代码,还有一些None值表示缺失的数据。我想把这些None值改成类似“vcv”的东西,在pandas里该怎么做呢?我试过这个

sala.replace(None,"vcv")

结果出现了这个错误

   2400                                     "strings or regular expressions, you "
   2401                                     "passed a"
-> 2402                                     " {0!r}".format(type(regex).__name__))
   2403                 return self.replace(regex, value, inplace=inplace, limit=limit,
   2404                                     regex=True)

TypeError: 'regex' must be a string or a compiled regular expression or a list or dict of strings or regular expressions, you passed a 'bool'

我又试了这个

if sala['N10'] is None:
    sala['N10'] = 'Nul'

但是没有任何变化。

1 个回答

16

最简单的方法就是:

sala['N10'].replace('None', 'vcv', inplace=True)

这样应该就能解决问题。

如果它们是真正的 NaN 值,那么调用 fillna 就会有效果。

比如:

sala['N10'].fillna(value='vcv', inplace = True)

还有我在评论中提到的建议:

sala.loc[sala['N10'].isnull(), 'N10'] = 'vcv'

撰写回答