轻微变化-
test['clean'] = test['Phrase'].apply(lambda x: ' '.join([inf.singularize(item) for item in x.split()]))
产量
Phrase Connection clean
0 Audi Cars Vehicles Audi Car
1 Two Parrots animals Two Parrot
2 Tall Buildings Landmark Tall Building
解释
在您现有的代码中,您正在这样做——
test["Phrase"].apply(lambda x:inf.singularize([item for item in x]))
让我们举第一个例子看看会发生什么。
x
在这种情况下
Audi Cars
-
[item for item in x]
返回字符列表-
['A', 'u', 'd', 'i', ' ', 'C', 'a', 'r', 's']
所以
singularize
不起作用,因为它只对字符起作用。
诀窍就是
x.split()
把单词分开,然后把
奇异化
在列表理解中。
最后做一个
' '.join()
把绳子拿回来。