Pandas将对象列转换为str - 列包含unicode,float等

时间:2018-01-09 22:29:08

标签: python-2.7 pandas utf-8

我有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.

1 个答案:

答案 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字符串。特殊字符™也得到了妥善保存。