2017-08-12 50 views
0

我想,以确保有一列中的任何字符串的问题从我的数据帧headlampUnicodeDecodeError:'ascii'编解码器,如何解决?

之所以称为Comment是因为我想以后导出数据帧到Excel使用.to_excel()和Unicode误差总是提高。

我已经在网上阅读了很多资料,也在这里解决了这个问题,但是到目前为止我无法管理它。 我试图通过使用像下面的代码encode()解决,但是,我仍然有同样的问题。

headlamp = part_dataframe(ro, 'PN 3D', '921') 
headlamp['Comment'] = headlamp.Comment.apply(lambda x: x.encode('ascii', 
'ignore')) 
headlamp['word'] = headlamp.Comment.str.split().apply(lambda x: 
pd.value_counts(x).to_dict()) 
len(headlamp) 

错误:

UnicodeDecodeError      Traceback (most recent call last) 
<ipython-input-57-29454fde650e> in <module>() 
    1 headlamp = part_dataframe(ro, 'PN 3D', '921') 
----> 2 headlamp['Comment'] = headlamp.Comment.apply(lambda x: 
x.encode('ascii', 'ignore')) 
    3 headlamp['word'] = headlamp.Comment.str.split().apply(lambda x: 
    4 pd.value_counts(x).to_dict()) 
    5 len(headlamp) 

C:\Users\Rafael\Anaconda2\envs\gl-env\lib\site- 
packages\pandas\core\series.pyc in apply(self, func, convert_dtype, args, 
**kwds) 
2218   else: 
2219    values = self.asobject 
-> 2220    mapped = lib.map_infer(values, f, convert=convert_dtype) 
2221 
2222   if len(mapped) and isinstance(mapped[0], Series): 

pandas\src\inference.pyx in pandas.lib.map_infer (pandas\lib.c:62658)() 

<ipython-input-57-29454fde650e> in <lambda>(x) 
    1 headlamp = part_dataframe(ro, 'PN 3D', '921') 
----> 2 headlamp['Comment'] = headlamp.Comment.apply(lambda x: 
x.encode('ascii', 'ignore')) 
    3 headlamp['word'] = headlamp.Comment.str.split().apply(lambda x: 
    4 pd.value_counts(x).to_dict()) 
    5 len(headlamp) 

UnicodeDecodeError: 'ascii' codec can't decode byte 0xb4 in position 71: 
ordinal not in range(128) 

我完全失去了在这个问题上,因此,任何帮助将不胜感激。

我使用Jupyter IPython的

+0

这是Python 2吗?另外,请显示完整的回溯,以便我们可以看到引发异常的行。 – lenz

+0

请注意,异常与* de *编码有关,所以'encode'方法本身并没有提高它。但是,如果这是Python 2,则可能涉及隐式解码步骤(从“str”到“unicode”的自动强制转换)。 – lenz

+0

我已经用完整的回溯更新了这个问题,关于你的2条评论,能否更好地解释我?我的Python是2.7 –

回答

0

0xb4是反引号的Unicode字符:http://www.fileformat.info/info/unicode/char/00b4/index.htm

它看起来像有一个在你的输入非ASCII字符。尝试将其编码为utf-8,然后查看是否有帮助。

如果你仍然需要它ascii,你可以试试这个解决方案:Convert a Unicode string to a string in Python (containing extra symbols)

+0

谢谢你的帮助,没有必要在ascii中,我只是尝试不同的类型,看看哪一个会解决。我尝试了你的两个建议并仍然没有工作,你有没有其他建议?预先感谢您 –

+0

尝试使用我发送的其他堆栈溢出链接的库,并查看是否出现错误! – AetherUnbound

+0

我已经尝试了一些关于该链接的sugestions,并且我无法使其工作。说实话,即使我做对了,我也不会。你能帮助我吗?,你如何写我的代码,我写在我的问题,以解决它根据你的建议 –