python - 为什么这个字符串不会转换为浮点型?

标签 python pandas jupyter-notebook

“金额”列是一个字符串。我想将其更改为 float ,以便我可以将这些行输入到以后的计算中。

In [1] import pandas as pd

       data = pd.read_csv('input.csv')

       data
Out [1] 
    ID  Amount          Cost
0   A   9,596,249.09    1000000
1   B   38,385,668.57   50000
2   C   351,740.00      100
3   D   -               23
4   E   178,255.96      999

请注意,“D”的数量为“-”而不是零。

首先我清理坏数据:

In [2]
    data['Amount'] = data['Amount'].replace(' -   ', 0)
    data
Out [2]
    ID  Amount          Cost
0   A   9,596,249.09    1000000
1   B   38,385,668.57   50000
2   C   351,740.00      100
3   D   0               23
4   E   178,255.96      999

然后我尝试使用两种方法转换为 float 。均不成功:

In [3]
    pd.Series(data['Amount']).astype(float)
Out [3]
    ValueError: could not convert string to float: '9,596,249.09'

和:

In [4]
    pd.to_numeric(data['Amount'])
Out [4]
    ValueError: Unable to parse string "9,596,249.09" at position 0

在绝望中,我尝试循环遍历行:

In [5]
    def cleandata(x):
        return float(x)

    data['Amount'] = data['Amount'].apply(cleandata)
Out [5]
    ValueError: could not convert string to float: '9,596,249.09'

感谢您提供的任何建议。我已经尝试了几个小时了。谢谢。

最佳答案

尝试:

data = pd.read_csv('input.csv', thousands=',', decimal='.')

关于python - 为什么这个字符串不会转换为浮点型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56495779/

相关文章:

python - 如何在 iPython/Jupyter Notebook 中调整/重新缩放 SVG 图形?

python-3.x - 使用 pymongo 从 csv 插入数组

python - 获取笔记本的详细实时报告/监控

python - Jupyter 笔记本,Python : How to call a magic from within a function?

python - 如何消除由于 scipy/numpy fft 中的零填充而产生的边界效应?

python - 为 matplotlib 绘图后端设置随机种子

python - 拆分列中的值并创建新的 cols 小问题

python - 将 Pandas Dataframe 的选择保存到 csv

python - pandas 在 csv 上提高 OutOfBoundsDatetime 但不在 sql 上提高 OutOfBoundsDatetime

jupyter-notebook - JupyterLab : Unable to load file after moving notebook to a new location