我已经将csv文件读入python 2.7(windows机器)。销售价格列似乎是字符串和浮点数的混合。有些行包含欧元符号€。 Python将€视为 。
df = pd.read_csv('sales.csv', thousands=',')
print df
Gender Size Color Category Sales Price
Female 36-38 Blue Socks 25
Female 44-46 Pink Socks 13.2
Unisex 36-38 Black Socks � 19.00
Unisex 40-42 Pink Socks � 18.50
Female 38 Yellow Pants � 89,00
Female 43 Black Pants � 89,00
我假设一个简单的替换行会解决它
df=df.replace('\�','',regex=True).astype(float)
但我得到编码错误
SyntaxError: Non-ASCII character
非常感谢听到您对此的看法
答案 0 :(得分:1)
我认为@jezrael的评论是有效的。首先,您需要使用编码读取文件(请参阅编码部分下的https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html)
df=pd.read_csv('sales.csv', thousands=',', encoding='utf-8')
但是要替换欧元符号,请尝试以下方法:
df=df.replace('\u20AC','',regex=True).astype(float)
答案 1 :(得分:1)
我遇到了类似的问题,我的数据框中的一列有很多货币符号。欧元,美元,日元,英镑等。我尝试了多种解决方案,但最简单的方法是使用unicodedata模块。
df['Sales Price'] = df['Sales Price'].str.replace(unicodedata.lookup('EURO SIGN'), 'Euro')
以上内容会将€
替换为Euro
列中的Sales Price
。