【问题标题】:Unable to convert string in to number in Jupyter无法在 Jupyter 中将字符串转换为数字
【发布时间】:2021-05-17 05:27:48
【问题描述】:

这是我的代码:

def str2number(amount):
 if type(amount) == int:
    return amount
    
 if amount[-1] == 'M': d = float(amount[:-1])
 return d*1000000
        
 elif amount[-1] == 'K': d = float(amount[:-1])
 return d*1000
    
 else: d = float(amount[:])
    return d
    
FIFA18['ValueNum'] = FIFA18['Value'].apply(lambda x: str2number(x))
FIFA18['WageNum'] = FIFA18['Wage'].apply(lambda x: str2number(x))

这是错误代码:

ValueError Traceback(最近调用 最后)在 15返回d 16 ---> 17 FIFA18['ValueNum'] = FIFA18['Value'].apply(lambda x: str2number(x)) 18 FIFA18['WageNum'] = FIFA18['Wage'].apply(lambda x: str2number(x))

c:\users\brain\appdata\local\programs\python\python39\lib\site-packages\pandas\core\series.py 在应用(自我,功能,convert_dtype,args,**kwds)4136
否则:4137 个值 = self.astype(object)._values -> 4138 mapped = lib.map_infer(values, f, convert=convert_dtype) 4139 4140 if len(mapped) and isinstance(mapped[0], 系列):

pandas_libs\lib.pyx in pandas._libs.lib.map_infer()

在 (x) 15返回d 16 ---> 17 FIFA18['ValueNum'] = FIFA18['Value'].apply(lambda x: str2number(x)) 18 FIFA18['WageNum'] = FIFA18['Wage'].apply(lambda x: str2number(x))

in str2number(数量) 12 13 其他: ---> 14 天 = 浮动(数量[:]) 15返回d 16

ValueError:无法将字符串转换为浮点数:'� 0.00'

【问题讨论】:

    标签: jupyter-notebook


    【解决方案1】:

    你确定这部分是正确的吗?

        else:
            d = float(amount[:])
            return d
    

    您假设其他所有内容都只是一个数字,但您的数据集包含一些其他字符。您需要先清理数据集或更改函数以解决这些情况。

    【讨论】:

    • @Yomibrain, by amount[:-1] 您正在删除最后一个字符,但数据集中的某些值在开头包含非数字值。而不是 amount[:-1] 你可以做 re.sub(r'\D', '', amount) 它将删除每个非数字字符(你需要先导入 re )。
    • 我真的不明白你的意思,我可以和你分享我的项目文件桌面吗?
    • @Yomibrain,我也是新用户。事实证明你不能在这里写私人信息,因此我们不能分享缩放链接。可以试试this版本的函数吗?
    猜你喜欢
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多