我想将“短语”列中的复数词转换为单数词。如何遍历每一行和每一项?
my_data = [('Audi Cars', 'Vehicles'),
('Two Parrots', 'animals'),
('Tall Buildings', 'Landmark')]
test = pd.DataFrame(my_data)
test.columns = ["Phrase","Connection"]
test
我尝试了
test["Phrase"] = test["Phrase"].str.lower().str.split()
import inflection as inf
test["Phrase"].apply(lambda x:inf.singularize([item for item in x]))
我想要的输出是
Phrase: Connection:
Audi Car Vehicles
Two Parrot animals
Tall Building Landmark
请注意,我只想单列阶段
答案 0 :(得分:1)
轻微变化-
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()
,它会拆分单词,然后将singularize
放入列表理解中。
最后用' '.join()
取回字符串。