我有一个类似13000行的数据框
print(df)
Date Price Nation
0 01/01/2018 -5.000,73 Spain
1 01/01/2018 15,60 Italy
3 01/01/2018 14,13 Italy
4 01/01/2018 12,53 Spain
5 01/01/2018 16,64 Italy
6 01/01/2018 22,48 Italy
7 01/01/2018 24,30 Italy
8 01/01/2018 24,88 Spain
9 01/01/2018 31,40 Italy
10 01/01/2018 18,74 Italy
价格列为non-null object
我删除了所有空白并删除了所有空行
我只尝试将价格列从系列转换为字符串
string=df['Price'].to_string()
print(string)
0 -5.000,73
1 15,60
3 14,13
4 12,53
5 16,64
6 22.48
7 24.30
8 24.88
9 31.40
10 18.74
当我尝试
string=string.strip('.')
string=string.replace(',','.')
float(string.strip().strip("'"))
系统返回了一条错误消息:
ValueError: could not convert string to float: '0
-5.000.73\n1 15.60\n3 14.13\n4 12.53\n5 16.64\n6 22.48\n7 24.30\n8 24.88\n9 31.40\n10
数据是从csv加载的,分隔符为,
/n32
,而只能看到类似的内容"01/01/2018","16,60","Spain"
,我知道/n
用于提供垂直空间,但是我不知道如何处理它,我注意到这与索引有关我阅读了这个问题,尝试了其他解决方案,但没有一个解决我的问题:
numpy.loadtxt, ValueError: could not convert string to float
ValueError: could not convert string to float: '-0,274697\n'
How do I parse a string to a float or int in Python?
Python convert string to float
答案 0 :(得分:2)
strip()
仅删除开头和结尾字符。您可以使用replace()
代替:
string = "-5.000,73"
string = string.replace('.', '')
string = string.replace(',', '.')
# float(string.strip().strip("'"))
float(string)
string.strip(s [,chars])
返回除去前导和尾随字符的字符串副本。如果省略了char或None,则将删除空格字符。如果给定且不是None,则char必须是字符串;字符串中的字符将从调用此方法的字符串的两端剥离。
可以找到更多信息here
此外,我不确定您为什么还要尝试删除撇号,但是其语法应为string.replace(''', '')
;我会等到您完成使用float()
剥离字符以将其转换为浮点数。
另一方面,您可以在代码中使用print语句查看出了什么问题。我一粘贴您的原始代码。显然,第一个句点并未从字符串中删除。