После обсуждения не совсем понятно, какое logi c управляет сопоставлением фруктов, но если вы пытаетесь извлечь какие-либо "apple"
, "apples"
или "watermelon"
из предложений, в которых фрукту предшествует di git и пробел, вы можете использовать:
>>> def replacer(s):
... return re.search(r"(?<=\d )(apples?|watermelon)\b", s).group()
...
>>> df = pd.DataFrame({"Sentence": ["I bought 1 watermelon", "I bought 2 apples", "I bought 1 apple"]})
>>> df["Fruit"] = df["Sentence"].apply(replacer)
>>> df
Sentence Fruit
0 I bought 1 watermelon watermelon
1 I bought 2 apples apples
2 I bought 1 apple apple
Если в ваших данных есть строки, не соответствующие шаблону, это будет sh. Вам нужно будет проверить эти случаи и ввести какое-то значение по умолчанию, например:
>>> def replacer(s):
... match = re.search(r"(?<=\d )(apples?|watermelon)\b", s)
... return match.group() if match else None
...
>>> df = pd.DataFrame({"Sentence": ["foo 1 watermelons"]})
>>> df["Fruit"] = df["Sentence"].apply(replacer)
>>> df
Sentence Fruit
0 foo 1 watermelons None
Если ваши данные сложнее, чем то, что вы показали, вам нужно будет адаптировать их, чтобы они соответствовали вашим фактическим данным. вариант использования.