У меня есть следующий Dataframe, содержащий различные названия продуктов, и выглядит так:
Name
0 1 Enkelt (35%)
1 1 Klasses Bitter
2 1 minute Urban Protect Mask
3 10 Years Tawny Port
4 100% Frugtbar
5 100% Klementinjuice
6 100% Kokosvand
7 1000 kernerugbrød øko.
См. Этот продукт: 1000 kernerugbrød øko.
. Я пытаюсь поставить некоторые условия, чтобы убрать oko.
с конца, и, основываясь на правилах датского языка, касающихся единственного и множественного числа, добавить либо «Økologisk» (единственное число), либо «Økologisk e »(множественное число) перед именем. В этом случае, поскольку kernerugbrød не заканчивается буквой r , это должен быть Økologisk.
Таким образом, в основном идея такова:
У меня есть строка, содержащая это значение в столбце Name
: 1000 kernerugbrød øko.
-> Я удаляю oko.
, в результате чего 1000 kernerugbrød
-> Я проверяю, является ли последняя буква r
или нет -> Добавить Økologisk
или Økologiske
в зависимости от предыдущего шага -> итоговая строка должна быть: Økologisk 1000 kernerugbrød
.
Моя попытка была следующей:
text = "Økologisk "
text2 = "Økologiske "
df['test'] = df['Name'].str.contains(",?\søko.") #creating a new column containing
#booleans to check which Name contains "oko."
df['Name'] = df['Name'].str.replace(r',?\søko.', "") #replacing "oko." with empty string
if df['test']: #if the Name contained "oko."
if df['Name'].str.contains("r(\s)?$"): #checking for plural
df['Name'] = text2 + df['Name']
else:
df['Name'] = text + df['Name']
Однако я получаю этоошибка в if df['test']
.
ValueError: Значение истинности Серии неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().
Я пытался использовать приведенные выше предложения, но ни одно из них на самом деле не помогаетя с этой задачей. Поэтому, что я должен сделать, чтобы исправить мой код ИЛИ как еще мой код должен быть написан, чтобы найти правильное решение для этой проблемы?