Pandas DataFrame:从行中的字符串中删除 (未知字符)

时间:2017-07-13 10:06:17

标签: pandas encoding non-ascii-characters

我已经将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

非常感谢听到您对此的看法

2 个答案:

答案 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