Как работать с данными, которые парсятся с сайта в программу?
К примеру, нужно достать курс валюты с сайта:
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 шт):
Попробуйте следующее
df = pd.read_html(io="http://www.cbr.ru/currency_base/daily/", decimal=' ', thousands='.')[0]
а затем df['Валюта']
Это даст вам информацию о нужном столбце
Ответ на вопрос:
Что я делаю не так?
Метод 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)