Я пытаюсь отфильтровать столбец, который состоит из списка продуктов с его описанием (он также содержит несколько идентификаторов продуктов).
Я использую Tkinter в качестве моего GUI, чтобы выдать 3 идентификатора продукта и получить идентификаторы, похожие на него (в этом случае я предоставляю 12345678s12 и получаю все идентификаторы, которые похожи на него, например, 34534534q23, 98765432y23 и т. Д. вкл)
данные выглядят примерно так
скрипт ниже:
def clean():
df['PO Item Description'] = df['PO Item Description'].astype(str).str.lower()
y =""
M = entryx.get() # Entry one from tkinter
N = entryx2.get() # Entry Two from tkinter
O = entryx3.get() # Entry three from tkinter
listx={'text1':[M,N,O]}
for values in listx.values():
if (listx["text1"][0]==listx["text1"][1]==listx["text1"][2]):
text1 = listx['text1'][0]
for i in range(0,len(text1)):
r=re.match('[a-zA-Z]',text1[i])
if r!=None:
y+='[a-zA-Z]'
r=re.match('[0-9]',text1[i])
if r!=None:
y+='\d'
r=re.match('[.\,_/=&*()%^@$!#-]',text1[i])
if r!=None:
y+='\W'
r=re.match('[ ]',text1[i])
if r!=None:
y+='\s'
else:
pass
ids = df['PO Item Description'].str.extract(r"({})".format(y),expand =False).dropna().tolist() #finds all items with similar Product ID
resultxx= ''
for product_IDs in zip(*[iter(ids)]):
resultxx = pd.DataFrame(ids)
Этот код работает, но он очень неуклюжий, так как я новичок в Python.
Теперь мои вопросы по коду:
- Как мне сделать этот код более эффективным?
- Как получить соответствующие строки, по которым были отфильтрованы столбцы, и заполнить их в новом файле Excel?
Пожалуйста, помогите мне.
Заранее спасибо