Python handlee并将同一列中的多个数据类型转换为数字
我正在尝试清理我的Python handlee并将同一列中的多个数据类型转换为数字,python,pandas,types,numeric,Python,Pandas,Types,Numeric,我正在尝试清理我的数据帧。问题是,我想将300多个不同的列转换为数字,但在同一列中,我有多种数据类型。 作为数据帧的示例: ID MONOCITOS EOSIN EOSINOFILOS NORMOBLASTOS 0 5 0.21 2 0 0.04 31.0 2 9 <0.22 False 0 0.04 33.0 5 12.8 0.16 0 0 0.02 sdfdr 6 No 0
数据帧
。问题是,我想将300多个不同的列转换为数字,但在同一列中,我有多种数据类型。
作为数据帧的示例:
ID MONOCITOS EOSIN EOSINOFILOS NORMOBLASTOS
0 5 0.21 2 0 0.04 31.0
2 9 <0.22 False 0 0.04 33.0
5 12.8 0.16 0 0 0.02 sdfdr
6 No 0 fh 0 0.02 60.0
9 0 0.28 3 - 0.06 Nan
14 3 - 3 - - 59.0
ID单核细胞曙红-曙红-正常成纤维细胞
0 5 0.21 2 0 0.04 31.0
2 9您可以像这样转换多个列:
df[["col1", "col2"]] = df[["col1", "col2"]].apply(pd.to_numeric, errors='coerce')
或更改整个数据帧:
df = df.apply(pd.to_numeric, errors='coerce')
强制将导致不可转换的值为NaN
我不知道有什么工具,但您可以遍历列并编写一个函数,通过编程来实现这一点。在简单的情况下,您可以使用:pd.to_numeric usedf=df.apply(pd.to_numeric,errors='concurve')
我已经尝试过这个解决方案,但它不起作用。由于列的某些值是字符串数据类型,因此整个列类型仍然是对象类型。这不适用于“300个不同的列”。您可以一次查看一组列。例如,使用一个一次转换10列的循环Yeah like::For c in df.columns:column=df[c]您还可以一次传递整个df
:df=df.apply(pd.to_numeric,errors='concurve')
True。传递列名只是为了防止同时更改列名太多。我将更改以使其更加明确