【问题标题】:Convert object into float (6½ to 6.5) [duplicate]将对象转换为浮点数(6½ 到 6.5)[重复]
【发布时间】:2020-01-28 11:59:36
【问题描述】:

通过这种尝试df['Total'] = df['Total'].astype('float') 返回could not convert string to float: '5½'。我也试过.str.split(),但也没有用。

import pandas as pd

d = {'Total': ['6', '5', '5', '5½', '5½', '6½', '6½']}
df = pd.DataFrame(data=d)

【问题讨论】:

  • ½ 是一个特殊的 Unicode 字符,不能识别为 3 个字符、分数或数值。您也许可以使用字符串替换方法将其更改为 '.5'
  • @hpaulj 有趣的是,我尝试了字符串替换,但也没有用
  • 我有点理解他们在另一个问题中对正则表达式做了什么,我只是不确定如何将其转换为适合我的数据框
  • 你可以做df['Total'] = df['Total'].str.replace('½','.5').astype(float)

标签: python pandas


【解决方案1】:

使用str.replace 将“½”替换为“.5”,然后使用astype(float) 将值转换为float。代码如下。

df['Total'] = df['Total'].str.replace('½','.5').astype(float)

输入

    Total
0   6
1   5
2   5
3   5½
4   5½
5   6½
6   6½

输出

    Total
0   6.0
1   5.0
2   5.0
3   5.5
4   5.5
5   6.5
6   6.5

【讨论】:

    猜你喜欢
    • 2021-12-18
    • 2021-08-11
    • 2021-05-24
    • 2021-06-18
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    相关资源
    最近更新 更多