df ['Pattern'] = df ['phrases']。apply(lambda texte:Preprocess,func_names = ['tokenizeTexte_0'])
import TreeTagger OK
Traceback (most recent call last):
File "classifier.py", line 41, in <module>
df['Pattern'] = df['phrases'].apply(lambda texte:Preprocess, func_names=['tokenizeTexte_0']) # modify the parameter each time you want to change the preprocess steps
File "/home/ke/anaconda3/lib/python3.7/site-packages/pandas/core/series.py", line 3194, in apply
mapped = lib.map_infer(values, f, convert=convert_dtype)
File "pandas/_libs/src/inference.pyx", line 1472, in pandas._libs.lib.map_infer
File "/home/k/anaconda3/lib/python3.7/site-packages/pandas/core/series.py", line 3181, in <lambda>
f = lambda x: func(x, *args, **kwds)
TypeError: <lambda>() got an unexpected keyword argument 'func_names'
文件看起来像这样(这是一个示例,因为,我无法放置原始数据)
id phrases etiquette sous-classe
23 C'est un psychiatre canadien. Med p
56 le Pr. Moldofsky, qui a fait Med n
émerger en 1975 cette maladie,
45 en identifiant des plaintes Fed ne
78équivalentes par privation de sommeil
chez des patientes volontaires.
789 Reconnue Outre-Atlantique, Ged p
elle reste peu connue dans l'Hexagone.
答案 0 :(得分:1)
这似乎是您没有正确理解apply
函数。
在apply
中,您只需传递函数名称而无需使用括号,pandas会根据lambda适当地将参数发送给函数。
所以做错了
df['Pattern'] = df.apply(lambda row:Preprocess(row['phrases'], tokenizeTexte_0),...)
您只需要这样做:
df['Pattern'] = df.apply(lambda x:Preprocess ,...)
现在,您只想在"phrases"
上工作。因此,无需在整个数据帧上使用.apply
。您可以使用:
df['Pattern'] = df['phrases'].apply(lambda texte:Preprocess, ...)
第二,您的Preprocess
函数需要第二个参数"func_names"
作为列表。您可以在应用程序中传递(而不是在预处理中),就像这样:
“ 更正”
df['Pattern'] = df['phrases'].apply(Preprocess,
func_names=['tokenizeTexte_0'])
答案 1 :(得分:0)
执行此操作的通用方法是将函数存储在字典中,在其中您可以使用键找到所需的函数。下面是一个示例,其中我创建一个函数combine_functions
,该函数将字符串列表作为参数。这使您可以选择应按哪个顺序运行哪个功能。从技术上讲,这还允许您多次运行相同的功能。
def func1(x):
print("I am func1")
return x
def func2(x):
print("I am func2")
return x
def func3(x):
print("I am func3")
return x
def combine_functions(x, func_names=[]):
functions = {"func1": func1,
"func2": func2,
"func3": func3}
for func_name in func_names:
x = functions[func_name](x)
return x