Как создать фрейм данных из каждого URL, а затем объединить их? - PullRequest
0 голосов
/ 04 мая 2019

Я пытаюсь настроить свой код для создания одного кадра данных из каждого URL-адреса в списке, а затем объединить эти кадры данных в один кадр данных.

Я очень близок к завершению; однако, как и сейчас, мой код показывает это сообщение об ошибке cannot concatenate object of type "<class 'list'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid

urls = ['url1', 'url2']
appended_data = []
for url in urls:
    driver = webdriver.Chrome(r'C:\Users\bobby\OneDrive\Documents\MyPrograms\webdrivers\chromedriver.exe')
    driver.implicitly_wait(30)
    driver.get(url)

    tables = pd.read_html(driver.page_source)
    df = tables
    appended_data.append(df)
    driver.close()

appended_data = pd.concat(appended_data)
appended_data.to_csv(r'C:\Users\bobby\OneDrive\Documents\RecruitingApp\hopefullyit\test.csv')

Мне нужна помощь, чтобы получить код для создания df из каждого URL, а затем объединить их и записать в csv.

Вот полное сообщение об ошибке

--------------------------------------------------------------------------- 
 TypeError                                 Traceback (most recent call last) 
<ipython-input-2-7451d5b1833d> in <module>
     11     driver.close()
      12 
 ---> 13 appended_data = pd.concat(appended_data)
     14 appended_data.to_csv(r'C:\Users\bobby\OneDrive\Documents\RecruitingApp\hopefullyit\test.csv')

~\Anaconda3\lib\site-packages\pandas\core\reshape\concat.py in concat(objs, axis, join, join_axes, ignore_index, keys, levels, names, verify_integrity, sort, copy)
    226                        keys=keys, levels=levels, names=names,
    227                        verify_integrity=verify_integrity,
--> 228                        copy=copy, sort=sort)
    229     return op.get_result()
    230 

~\Anaconda3\lib\site-packages\pandas\core\reshape\concat.py in __init__(self, objs, axis, join, join_axes, keys, levels, names, ignore_index, verify_integrity, copy, sort)
    287                        ' only pd.Series, pd.DataFrame, and pd.Panel'
    288                        ' (deprecated) objs are valid'.format(type(obj)))
--> 289                 raise TypeError(msg)
     290 
    291             # consolidate

TypeError: cannot concatenate object of type "<class 'list'>"; only 
pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid

1 Ответ

0 голосов
/ 05 мая 2019

Как говорят @furas и я, pandas read_html извлекает список фреймов данных из источника URL.Так что вам просто нужно запросить соответствующий индекс в списке.Если вы получаете только одну таблицу, вы можете запросить индекс.

 df = tables[0]
 appended_data.append(df)
 driver.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...