Сопоставление строки с Pandas .DataFrame.any () - PullRequest
0 голосов
/ 09 мая 2020

У меня есть al oop, который проходит через теги на веб-сайте for product in products. Каждый тег содержит строку, которую я очищаю и ссылаюсь на product.text. У меня есть условие if внутри l oop, проверяющее, содержит ли мой DataFrame уже это product.text str.

if product.text == existing_products_file['Product_ID'].any():

Если True, я continue l oop и начать со следующего product. Если False, выполняется остальная часть l oop.

Я не могу заставить условие if работать правильно. Я пробовал множество решений, включая, помимо прочего: превращение моего DataFrame в Series и использование .isin() путем передачи list, содержащего каждый product.text; цикл по existing_products_file, присвоение каждого значения переменной, а затем цикл по условию if по каждой переменной; Я также попытался полностью переписать раздел, но безрезультатно.

Если у вас есть какие-либо советы по поводу того, чем вызвана проблема, или другой способ записи, дающий тот же результат, дайте мне знать .

Полный код и контекст ниже:

product_overview = driver.find_element_by_class_name('products')
product_box = product_overview.find_elements_by_class_name('product-number')
existing_products_file = pd.read_excel('path to excel doc', index=0, usecols=[1])
#
for product in product_box:
    Do something
    if product.text == existing_products_file['Product_ID'].any():
        Do another thing
        continue
    else:
        Do something else
  • I ДОЛЖЕН ссылаться на мою таблицу Excel, которая содержит уже сохраненные идентификаторы продуктов
  • existing_products_file - это DataFrame, состоящий из индекса и столбца с заголовком «Product_ID»
  • existing_products_file не имеет значений Nan, и каждый product.text не является Nan
  • Я хочу, чтобы условие if выполнялось True, если product.text str соответствует любому str в existing_products_file столбце 'Product_ID'
  • Я использую Selenium для очистки веб-сайта

Если я пропустил или нуждается в дополнительных разъяснениях, дайте мне знать. Спасибо!

...