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