Чтение таблицы модулей из документации

92
07 февраля 2022, 19:50

Как правильно прочитать данные, чтобы были индексы и имена колонок?

Использую библиотеку pandas:

import pandas as pd
a = pd.read_html('https://docs.python.org/3.8/py-modindex.html')
print(a)

Результат:

C:\ProgramData\Anaconda3\envs\tensor\pythonw.exe E:/python_projects/newml/test.py                       
[       0       1                                                               2
0       NaN     NaN                                                           NaN
1       NaN     _                                                             NaN
2       NaN     _future_                             Future statement definitions
3       NaN     _main_          The environment where the top-level script is ...
4       NaN     _dummy_thread         Drop-in replacement for the _thread module.
375     NaN     z                                                             NaN
376     NaN     zipapp                      Manage executable Python zip archives
377     NaN     zipfile                  Read and write ZIP-format archive files.
378     NaN     zipimport       Support for importing Python modules from ZIP ...
379     NaN     zlib            Low-level interface to compression and decompr...

Ссылка на страницу из которой читалась таблица: Python Modules

104 / 10000 RUSSIAN Translate inGoogleBing

Answer 1

Попробуйте так:

a = (pd.read_html('https://docs.python.org/3.8/py-modindex.html')
     [0]
     .drop(columns=0)
     .dropna()
     .rename(columns={1:'module', 2:'description'}))

Результат:

In [10]: a
Out[10]:
            module                                        description
2       __future__                       Future statement definitions
3         __main__  The environment where the top-level script is ...
4    _dummy_thread        Drop-in replacement for the _thread module.
5          _thread                           Low-level threading API.
8              abc    Abstract base classes according to :pep:`3119`.
..             ...                                                ...
373  xmlrpc.server              Basic XML-RPC server implementations.
376         zipapp              Manage executable Python zip archives
377        zipfile           Read and write ZIP-format archive files.
378      zipimport  Support for importing Python modules from ZIP ...
379           zlib  Low-level interface to compression and decompr...
[319 rows x 2 columns]

Пояснения:

  • pd.read_html(...) - возвращает список DataFrame'ов, т.е. по одному DataFrame для каждой HTML таблицы на данной странице. В нашем случае у нас одна таблица, поэтому используем pd.read_html(url)[0]
  • первый столбец HTML таблицы пустой, поэтому удаляем его - .drop(columns=0)
  • чтобы избавиться от строк, в которых отсутствует описание используем метод .dropna()
  • в конце переименовываем столбцы 1 --> module, 2 --> description
READ ALSO
Увеличивать textarea при необходимости

Увеличивать textarea при необходимости

Как увеличивать textarea, когда текста становится больше, чем можно увидеть в блоке? Это можно сделать на css? Если знаете решение на js, напишите,...

96
Якорь используя class, а не id

Якорь используя class, а не id

Обычно ссылки на определенный блок привязаны через idМожно ли как то сделать через class?

72
Что такое "Обычная кнопка" (button type='button')

Что такое "Обычная кнопка" (button type='button')

Есть кнопки для создания "обычных кнопок"

76