Как работать с данными, которые парсятся с сайта в программу?

К примеру, нужно достать курс валюты с сайта:

http://www.cbr.ru/currency_base/daily/

Использую для этого библиотеку Pandas, а именно метод:

df = pd.read_html(io="http://www.cbr.ru/currency_base/daily/", decimal=',', thousands='.')

В итоге получаю DataFrame, состоящий из одного элемента, и не могу обратиться к его отдельным строкам и столбцам. Если выполнить print(df[0]), то в консоль будет выведена вся таблица целиком.

Что я делаю не так?


Ответы (2 шт):

Автор решения: Shika_meow

Попробуйте следующее

df = pd.read_html(io="http://www.cbr.ru/currency_base/daily/", decimal=' ', thousands='.')[0]

а затем df['Валюта'] Это даст вам информацию о нужном столбце

→ Ссылка
Автор решения: MaxU

Ответ на вопрос:

Что я делаю не так?

Метод pd.read_html() всегда возвращает список фреймов, т.к. в общем случае на WEB странице может быть больше одной HTML таблицы.

Из документации:

Read HTML tables into a list of DataFrame objects.

Поэтому просто выберите из результирующего списка нужную вам таблицу (DataFrame) по индексу.

Пример:

In [209]: dfs = pd.read_html(io="http://www.cbr.ru/currency_base/daily/", decimal=',', thousands='.')

In [210]: type(dfs)
Out[210]: list

In [211]: len(dfs)
Out[211]: 1

In [212]: df = pd.read_html(io="http://www.cbr.ru/currency_base/daily/", decimal=',', thousands='.')[0]

In [213]: type(df)
Out[213]: pandas.core.frame.DataFrame

In [214]: df.shape
Out[214]: (34, 5)
→ Ссылка