我认为有几件事可以帮助你解决这个问题。第一个是将“awesome_count”函数转换为lambda函数。假设awesome_count的目标是返回单词“awesome”出现的次数,我知道products ['word_count']包含单词和计数字典(即“and”=> 5,“awesome”= > 2,“糟糕=”1“)。这里的辛苦工作已经为你完成,因为你拥有产品中的所有计数['word_count']。唯一要注意的是你正在寻找的这个词可能不存在于列表中。
def awesome_count():
if 'awesome' in products['word_count']:
return products['word_count']['awesome']
else
return 0L这里的函数检查单词列表中是否有“awesome”。如果是,那么我们只返回产品['word_count'] ['awesome'](即真棒发生的次数)。如果'awesome'不存在,那么我们默认为0。
所以让我们把它变成一个lambda。基于他的路线:
products['awesome'] = products['word_count'].apply(awesome_count())每次调用lambda函数都传入产品['word_count']。在我们的lambda函数中,这将是x。
lambda x: x['awesome'] if 'awesome' in x else 0L这与上面相同,但是以lambda格式表示。所以将它结合起来:
products['awesome'] = products['word_count'].apply(lambda x: x['awesome'] if 'awesome' in x else 0L)这会奏效,但我们可以做得更好。不要硬编码'awesome'这个词,让我们使用更通用的东西:
word='awesome'
products[word] = products['word_count'].apply(lambda x: x[word] if word in x else 0L)现在我们有一些更通用的东西,我们可以插入任何单词。所以,假设我们有一个我们需要计算的单词列表。我们可以为列表中的所有内容执行此操作。
word_list = ['awesome','and','some','other','words']
for word in word_list:
products[word] = products['word_count'].apply(lambda x: x[word] if word in x else 0L)这是一个很好的通用解决方案,可用于任意数量的单词。快乐的编码。