【发布时间】:2017-08-12 20:30:41
【问题描述】:
我正在尝试确保我的数据框 headlamp 中名为 Comment 的一列中存在任何字符串问题
原因是因为我稍后尝试使用.to_excel() 将数据框导出到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
【问题讨论】:
-
这是 Python 2 吗?另外,请显示完整的回溯,以便我们查看在哪一行引发了异常。
-
请注意,该异常与de编码有关,因此
encode方法本身并没有引发它。但是,如果这是 Python 2,则可能涉及隐式解码步骤(从str自动强制转换为unicode)。 -
我已经用完整的回溯更新了这个问题,关于你的 2 条评论,能否更好地解释一下?我的 python 是 2.7
-
我不熟悉 pandas 的数据模型,但是你可以试试 lambda 表达式中的
x.decode('latin-1').encode('ascii', 'ignore')。如果您不知道str和unicode类型之间的区别,则需要阅读该主题或切换到 Python 3(您遇到此类问题的频率要低得多)。
标签: python encoding utf-8 decode