У меня есть датафрейм, как показано ниже, мне нужно найти только первое вхождение в строке для набора значений.
Я не могу использовать функцию "найти" вместе с регулярными выражениями и словарем.И если я использую функцию «findall», это, конечно, поиск всех случаев, которые мне не нужны.
Text
51000/1-PLASTIC 150 Prange
51034/2-RUBBER KL 100 AA
51556/3-PAPER BD+CM 1 BOXT2
52345/1-FLOW IJ 10place 500 plastic
54975/1-DIVIDER PQR 100 BC
54975/1-SCALE DEF 555 AB Apple
54975/1-PLASTIC ABC 4.6 BB plastic
Код:
import re
L = ['PLASTIC','RUBBER','PAPER','FLOW']
pat = '|'.join(r"\b{}\b".format(x) for x in L)
df['Result'] = df['Text'].str.find(pat, flags=re.I).str.join(' ')
print(df)
df = df.replace(r'^\s*$', np.nan, regex=True)
df = df.replace(np.nan, "Not known", regex=True)
#df['Result'] = df['Result'].str.lower()
Ожидаемый результат:
Text Result
51000/1-PLASTIC 150 Prange Plastic
51034/2-RUBBER KL 100 AA Rubber
51556/3-PAPER BD+CM 1 BOXT2 Paper
52345/1-FLOW IJ 10place 500 plastic Flow
54975/1-DIVIDER PQR 100 BC Not known
54975/1-SCALE DEF 555 AB Apple Not KNown
54975/1-PLASTIC ABC 4.6 BB plastic Plastic
Ошибка:
Ошибка типа: find () получила неожиданный аргумент ключевого слова 'flags'