我不能使用python的“替换”来使我的0成为缺失值(0-> np.nan)

时间:2019-04-29 11:44:32

标签: python

我用熊猫从云中读取了我的csv文件,我使用了replace()并希望0成为丢失的值,但它似乎不起作用。

我使用Google的colab

我尝试了两种方法:

brew cask reinstall iterm2

但是数据与我第一次读取时相同,0没有变化

这是我读取文件的功能,我使用块方法

user_data = user_data.replace(0,np.nan) # first 
user_data.replace(0,np.nan,inplace = True) # second

user_data.head() # I use this to view the data.

注意:我的代码没有报告错误,而是输出结果,但这不是我想要的

2 个答案:

答案 0 :(得分:1)

您的0可能只是字符串,请尝试使用:

user_data = user_data.replace('0', np.nan)

答案 1 :(得分:0)

在这种情况下,Python会很烦人。

如前所述,这可能是因为0是字符串而不是整数。 可以满足

user_data.replace("0",np.nan,inplace = True)

但是,我想指出的是,在您知道应该在pandas数据框中的列中包含哪种类型的数据的情况下,无论何时,您都应将其明确设置为该类型。在这种情况下,将引发错误,您将确切知道问题出在哪里。

在您的情况下,列为:

names2=['user_id','age','gender','area','status']

我们假设

  • user_id是字符串
  • 年龄是整数
  • 性别是字符串
  • 区域是字符串
  • 状态为字符串

您可以通过以下方式告诉pandas应该将哪一列指定为哪种数据类型:

user_data = userdata.astype({"user": str, "age": integer, "gender": str, "area": str, "status": str})

还有许多其他方法可以执行此操作,如以下answer中所述。选择适合您或您需要的。