pandas.DataFrame将所有字符串值设置为nan

far*_*awa 3 python string dataframe pandas

我有一个pandas.DataFrame包含string,float和int类型.

有没有办法将所有无法转换为float的字符串设置为NaN

例如:

    A  B   C      D
0   1  2   5      7
1   0  4 NaN     15
2   4  8   9     10
3  11  5   8      0
4  11  5   8  "wajdi"
Run Code Online (Sandbox Code Playgroud)

至:

    A  B   C      D
0   1  2   5      7
1   0  4 NaN     15
2   4  8   9     10
3  11  5   8      0
4  11  5   8    NaN
Run Code Online (Sandbox Code Playgroud)

rwh*_*049 5

你可以使用pd.to_numeric和设置errors='coerce'

pandas.to_numeric

df['D'] = pd.to_numeric(df.D, errors='coerce')

哪个会给你:

    A   B   C   D
0   1   2   5.0 7.0
1   0   4   NaN 15.0
2   4   8   9.0 10.0
3   11  5   8.0 0.0
4   11  5   8.0 NaN
Run Code Online (Sandbox Code Playgroud)

不推荐使用的解决方案(仅适用于pandas <= 0.20):

df.convert_objects(convert_numeric=True)
Run Code Online (Sandbox Code Playgroud)

pandas.DataFrame.convert_objects

这是convert_objects源代码中的开发说明:# TODO: Remove in 0.18 or 2017, which ever is sooner.因此,如果您使用它,请不要将其作为长期解决方案.