使用pandas将对象类型列转换为数字类型

时间:2018-01-16 10:45:22

标签: python pandas data-cleaning

我正在尝试使用pandas清理数据。当我执行df.datatypes时,它显示列是对象类型。我希望将它们转换为数字类型。 我试过各种各样的方式,比如;

data[['a','b']] = data[['a','b']].apply(pd.to_numeric, errors ='ignore')

然后,

data['c'] = data['c'].infer_objects()

但似乎没有任何效果。解释器不会抛出任何错误,但同时它不会执行所需的转换。

非常感谢任何帮助。

提前感谢。

1 个答案:

答案 0 :(得分:2)

to_numeric的帮助页面中,errors的说明如下:

errors : {'ignore', 'raise', 'coerce'}, default 'raise'
        - If 'raise', then invalid parsing will raise an exception
        - If 'coerce', then invalid parsing will be set as NaN
        - If 'ignore', then invalid parsing will return the input

如果您的apply在没有对其做任何事情的情况下返回您的输入,那么原因是因为您使用了不可转换的对象,并且使用to_numeric调用errors='ignore'并不是&#39帮助。

尝试使用第二个选项errors='coerce'

df = df.apply(pd.to_numeric, errors='coerce')

或者,

for c in df.columns:
    df[c] = pd.to_numeric(df[c], errors='coerce')

此外,infer_objects执行软类型转换。如果要检查列dtypes,请改用df.dtypes