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

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


然后,我尝试使用2种方法将其转换为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/

10-08 22:13