【问题标题】:handlee and convert multiple data types in the same column to numeric处理并将同一列中的多种数据类型转换为数字
【发布时间】:2018-11-26 22:43:08
【问题描述】:

我正在尝试清理我的Dataframe。问题是我想将 300 多个不同的列转换为数字,但在同一列中我有多种数据类型。 以DataFrame为例:

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

将具有不同数据类型的列转换为数字的最佳方法是什么?是否有任何模块可以自动执行此任务? 谢谢

【问题讨论】:

  • 我不知道一个工具,但你可以通过这些列并编写一个以编程方式执行此操作的函数。在简单的情况下,您可以使用:pd.to_numeric pandas.pydata.org/pandas-docs/stable/generated/…
  • 使用df = df.apply(pd.to_numeric, errors='coerce')
  • 我已经尝试过这个解决方案,但它不起作用。由于列的某些值是字符串数据类型,因此整个列类型仍然是对象类型

标签: python pandas types numeric


【解决方案1】:

您可以像这样转换多个列:

df[["col1", "col2"]] = df[["col1", "col2"]].apply(pd.to_numeric, errors='coerce')

或更改整个数据框:

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

强制将导致不可转换的值为NaN

【讨论】:

  • 这不适用于“300 个不同的列”
  • 您可以一次浏览一组列。例如,使用一次可以转换 10 列的循环
  • 是的喜欢:: for c in df.columns: column = df[c]
  • 你也可以一次通过整个dfdf=df.apply(pd.to_numeric, errors='coerce')
  • 是的。传递列名只是在尝试同时更改所有内容的情况下可能太多了。我会更改以使其更明确
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2021-07-21
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 2011-02-12
相关资源
最近更新 更多