pandas Map没有lambda的 Dataframe 函数[重复]

iovurdzv  于 2023-01-07  发布在  其他
关注(0)|答案(1)|浏览(140)
    • 此问题在此处已有答案**:

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列?谢谢

yc0p9oo0

yc0p9oo01#

可能的解决方案是使用Series.apply代替map,然后可以添加没有lambda的参数,如命名参数:

df['summary'] = df['text'].map(summarize, percentage=.8)

TypeError:map()获得意外的关键字参数“percentage”

df['summary'] = df['text'].apply(summarize, percentage=.8)

相关问题