将字符串函数应用于pandas dataframe列

时间:2014-10-01 15:48:33

标签: python pandas dataframe

这看起来有些基本但经过stackoverflow之后我似乎无法回答所有问题并解决我的问题。所以我正在研究我的文字处理技巧。我把汽车评论放在一个像这样的pandas数据框中:

    Review
0   :P I like you, Merc. You make me laugh! If Mat...
1   I am surprised that I did not find any discuss...
3   . . .let me see if I am following along correc...
4   . . .now hold on a minute. A "current" A6 4.2 ...
5   but has anyone noticed the front oh the new ac...

我写了一个函数,它接受一个字符串作为输入并返回一个值(在我的情况下是一个情绪分数)。在我的函数中,此值将放在新创建的列中。我显然遇到的问题是输入 - 我得到一个预期的字符串错误。对于数据框,有对象而不是字符串。

该函数非常长,并且在输入字符串时有效。这是函数的一个片段:请注意,数据框的标题是edmunds。

def checker(b):
    word = 'ls'
    if stry.find(word) == -1:
        edmunds['ls'] = 0.0
    ...
    edmunds['ls'] = sum(o_list)

任何帮助将不胜感激。如果我应该从数据框到列表,或者如果我仍然可以在熊猫中工作,我试图绕过头脑。

输出理想情况如下:

Review                                                 ls
0   :P I like you, Merc. You make me laugh! If Mat...  0.4
1   I am surprised that I did not find any discuss...  0.5
3   . . .let me see if I am following along correc...  0.0
4   . . .now hold on a minute. A "current" A6 4.2 ...  1.0
5   but has anyone noticed the front oh the new ac...  -0.6

1 个答案:

答案 0 :(得分:1)

从列ls

创建列Review
  1. 您需要一个带一个字符串并返回一个号码的函数。目前,checker函数不会这样做,因为它不返回任何内容(并且还在edmunds内设置值,这是不必要的)。鉴于函数的外观,您可能希望使用return sum(o_list)结束函数。而且,要清楚,输入b必须是单个字符串。测试此方法的一种方法是:您应该能够写checker("hello")并获得一个号码。

  2. 如果您以这种方式撰写checker,那么您可以轻松创建ls edmunds['ls'] = edmunds.Review.apply(checker)

  3. 如果您想了解Pandas为何如此工作的更多背景知识:apply函数是mapping(列表上的函数)的示例。