Python将熊猫数据框中的单词单数化

时间:2018-08-06 12:13:35

标签: python pandas loops nlp

我想将“短语”列中的复数词转换为单数词。如何遍历每一行和每一项?

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

请注意,我只想单列阶段

1 个答案:

答案 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()取回字符串。