Как записать очищенные данные во фрейм данных в правильном порядке в Python - PullRequest
0 голосов
/ 16 октября 2019

У меня есть следующая программа на Python, которая просматривает веб-сайт, чтобы получить имена, названия компаний и адреса. Это отлично работает. Затем я пытаюсь записать очищенные данные во фрейм данных. Я хочу их в правильном порядке. Иногда на сайте нет названия компании, а только имя и адрес. Могу ли я указать, что он принимает значение по умолчанию, если название компании отсутствует? Потому что, когда я пытаюсь записать его в кадр данных, я получаю эту ошибку:

«ValueError: Длина значений не соответствует длине индекса».

Поскольку названия компаний присутствуют не для каждого участника.

memeberName = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, '.member-name')))
company = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, '.company-name')))
address = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, '.list-address-panel')))

mb = []
comp = []
add = []

df = pd.DataFrame(columns = ['MemberName', 'Company', 'Address'])

for getname in memeberName:
        print("Name:" + getname.text) #returns 20 results
        mb.append(getname.text)

for getcompany in company:
        print("CompanyName:" + getcompany.text) #returns 18 results
        comp.append(getcompany.text)

for getaddress in address:
        print("Address:" + getaddress.text) #returns 20 results
        add.append(getaddress.text)

df["MemberName"] = mb
df["Address"] = add
df["Company"] = comp

print(df)

Данные, которые мне нужно очистить, находятся внутри тегов div, а не в таблице. Поэтому я пытаюсь найти способ очистить детали в правильном порядке. Мне нужно имя, компания и адрес каждого. Если для какой-то компании не хватает, мне нужно пусто, NAN или NULL, она не должна принимать компанию с другим именем.

Elements

1 Ответ

0 голосов
/ 16 октября 2019

Ниже (с помощью itertools.zip_longest)

import itertools
import pandas as pd

mb = ['A','B','C']
comp = ['Z','X']
add = [12]


values = list(itertools.zip_longest(mb, comp, add))
df = pd.DataFrame(values)
print(df)  

output

0  A     Z  12.0
1  B     X   NaN
2  C  None   NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...