我有pandas数据框,其中列类型显示为object
,但当我尝试转换为字符串时,
df['column'] = df['column'].astype('str')
UnicodeEncodeError
被抛出:
*** UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)
我的下一个方法是处理编码部分:
df['column'] = filtered_df['column'].apply(lambda x: x.encode('utf-8').strip())
但是这会产生以下错误:
*** AttributeError: 'float' object has no attribute 'encode'
将此列转换为字符串的最佳方法是什么。
列
中的字符串示例Thank you :)
Thank You !!!
responsibilities/assigned job.
答案 0 :(得分:1)
在尝试运行最初用于python 3的脚本时,我在python 2.7中遇到了同样的问题。在python 2.7中,默认的str
功能是编码为ASCII,这显然不适用于你的数据。这可以通过一个简单的例子来复制:
import pandas as pd
df = pd.DataFrame({'column': ['asdf', u'uh ™ oh', 123]})
df['column'] = df['column'].astype('str')
结果:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2122' in position 3: ordinal not in range(128)
相反,您可以指定unicode:
df['column'] = df['column'].astype('unicode')
确认该号码已转换为字符串:
df['column'][2]
这会输出u'123'
,因此它已被转换为unicode字符串。特殊字符™也得到了妥善保存。