首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中定义函数将对象列转换为浮点数?

如何在Python中定义函数将对象列转换为浮点数?
EN

Stack Overflow用户
提问于 2018-08-18 07:37:52
回答 1查看 163关注 0票数 -2

我导入了一个具有不同类型列的DataFrame。如下所示:

代码语言:javascript
复制
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1272 entries, 0 to 1271
Columns: 189 entries, Year to HUMAN_rank
dtypes: float64(67), int64(1), object(121)
memory usage: 1.8+ MB

我想要想出一个函数来迭代DataFrame的每一列,识别每一列中的值的类型,如果该列具有object类型,则将其转换为float。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-18 07:46:59

要仅对object数据类型执行此操作,可以使用select_dtypes执行此操作

代码语言:javascript
复制
df[df.select_dtypes('object').columns] = df.select_dtypes('object').astype(float)

例如:

代码语言:javascript
复制
>>> df
  col1      col2 col3  col4
0    1  0.452893    2     8
1    2  0.745232    3     6
2    1  0.374296    3     1
3    3  0.398660    3     4
4    2  0.902737    2     1
5    3  0.940392    3     0
6    3  0.382493    3     0
7    2  0.684829    3     4
8    2  0.506248    3     8
9    1  0.161701    3     3

>>> df.dtypes
col1     object
col2    float64
col3     object
col4      int64
dtype: object

>>> df[df.select_dtypes('object').columns] = df.select_dtypes('object').astype(float)

>>> df.dtypes
col1    float64
col2    float64
col3    float64
col4      int64
dtype: object

注意:如果您的一些列有一些不能转换为浮点型的值,上面的方法将不起作用。您可以遍历它们,使用带有errors='coerce'downcast='float'pd.to_numeric转换它们

代码语言:javascript
复制
>>> df
  col1      col2 col3  col4
0    3  0.594651    2     6
1    3  0.677595    3     3
2    3  0.546434    1     0
3    3  0.454769    2     6
4    x  0.321130    2     3
5    2  0.473391    2     7
6    1  0.207182    2     7
7    2  0.883071    3     1
8    x  0.994372    2     4
9    1  0.052539    3     2

>>> df.dtypes
col1     object
col2    float64
col3     object
col4      int64
dtype: object

for col in df.select_dtypes('object').columns:
    df[col] = pd.to_numeric(df[col], errors='coerce', downcast='float')

>>> df
   col1      col2  col3  col4
0   3.0  0.594651   2.0     6
1   3.0  0.677595   3.0     3
2   3.0  0.546434   1.0     0
3   3.0  0.454769   2.0     6
4   NaN  0.321130   2.0     3
5   2.0  0.473391   2.0     7
6   1.0  0.207182   2.0     7
7   2.0  0.883071   3.0     1
8   NaN  0.994372   2.0     4
9   1.0  0.052539   3.0     2
>>> df.dtypes
col1    float32
col2    float64
col3    float32
col4      int64
dtype: object
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51903994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档