这看起来有些基本但经过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
答案 0 :(得分:1)
从列ls
:
Review
您需要一个带一个字符串并返回一个号码的函数。目前,checker
函数不会这样做,因为它不返回任何内容(并且还在edmunds
内设置值,这是不必要的)。鉴于函数的外观,您可能希望使用return sum(o_list)
结束函数。而且,要清楚,输入b
必须是单个字符串。测试此方法的一种方法是:您应该能够写checker("hello")
并获得一个号码。
如果您以这种方式撰写checker
,那么您可以轻松创建ls
:
edmunds['ls'] = edmunds.Review.apply(checker)
如果您想了解Pandas为何如此工作的更多背景知识:apply
函数是mapping(列表上的函数)的示例。