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

Dhv*_*hah 4 python pandas data-cleaning

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

data[['a','b']] = data[['a','b']].apply(pd.to_numeric, errors ='ignore')
Run Code Online (Sandbox Code Playgroud)

然后,

data['c'] = data['c'].infer_objects()
Run Code Online (Sandbox Code Playgroud)

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

任何帮助将不胜感激。

提前致谢。

cs9*_*s95 6

从帮助页面来看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
Run Code Online (Sandbox Code Playgroud)

如果您apply返回输入而不对其执行任何操作,那么原因是因为您有不可转换的对象,并且调用to_numericwitherrors='ignore'没有帮助。

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

df = df.apply(pd.to_numeric, errors='coerce')
Run Code Online (Sandbox Code Playgroud)

或者,

for c in df.columns:
    df[c] = pd.to_numeric(df[c], errors='coerce')
Run Code Online (Sandbox Code Playgroud)

此外,还infer_objects执行软类型转换。如果您想检查列数据类型,请df.dtypes改用。