使用map在pandas dataframe列上应用函数

时间:2017-09-18 04:20:47

标签: python pandas lambda

我是第一次做情绪分析。我正在分析yelp评论。在将评论写入csv文件之前,我已将评论转换为列表。我对这些评论有一些编码问题所以我正在运行此代码。

df['newtext'] = map(lambda x: x.decode('latin-1').encode('ascii','ignore'),df['comment'])

这会创建一个新列(newtext),但我没有收到干净的文本,而是收到此消息

将对象映射到0x000001C1B9CE07F0

我正在使用python 3.请帮助。谢谢

4 个答案:

答案 0 :(得分:1)

Python的map函数返回地图对象,需要将其转换为列表。 Example

因此,您可以在列表()

中转换map()调用
df['newtext'] = list(map(lambda x: x.decode('latin-1').encode('ascii','ignore'),df['comment']))

答案 1 :(得分:1)

这是pandas map会减慢速度,特别是对于大型数据帧。您应该知道字符串列提供了矢量方法,这些方法比映射和循环快得多。

pandaic方式是调用str访问方法 - encodedecode,这些方法完全相同,但更快。

df['newtext'] = df.comments.str.decode('latin-1').str.encode('ascii','ignore')

答案 2 :(得分:0)

试试这个。它将地图对象转换为列表。

df['newtext'] = list(map(lambda x: x.decode('latin-1').encode('ascii','ignore'),df['comment']))

答案 3 :(得分:0)

只需将地图对象转换为列表,如下所示

df['newtext'] = list(map(lambda x: x.decode('latin-1').encode('ascii','ignore'),df['comment']))