- 此问题在此处已有答案**:
python pandas: apply a function with arguments to a series(7个答案)
昨天关门了。
我有以下功能:
def summarize(text, percentage=.6):
import numpy as np
sentences = nltk.sent_tokenize(text)
sentences = sentences[:int(percentage*len(sentences))]
summary = ''.join([str(sentence) for sentence in sentences])
return summary
我想把它Map到dataframe行。当我使用下面的代码时,它工作得很好:
df['summary'] = df['text'].map(summarize)
然而,当我想在这个调用中改变percentage变量时,它执行df['summary'] = df['text'].map(summarize(percentage=.8))
,它显示一个错误,表明它需要另一个参数,即text
。当然,它可以使用一个 * lambda * 函数来解决,如下所示:
df['summary'] = df['text'].map(lambda x: summarize(x, percentage=.8))
但是我不想在调用中使用lambda。是否有其他方法可以这样做?例如,在函数中使用kwargs
来引用 Dataframe 中的text
列?谢谢
1条答案
按热度按时间yc0p9oo01#
可能的解决方案是使用
Series.apply
代替map
,然后可以添加没有lambda的参数,如命名参数:TypeError:map()获得意外的关键字参数“percentage”