Почему возникает ошибка KeyError при попытке обратиться к столбцу таблицы?
Хочу собрать с википедии список городов и поместить их в список.
Делаю это через pd.read_html(). Получаю таблицу, но при попытке распечатать какой-либо столбец возникает ошибка.
Что я делаю не так?
Вот код:
import pandas as pd
url = r'https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%B3%D0%BE%D1%80%D0%BE%D0%B4%D0%BE%D0%B2_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8'
tables = pd.read_html(url)
cities = tables[0].rename(columns={'Город': 'city'})
# cities.head()
print(cities['city'])
Ошибка очень длинная, не стал полностью прикреплять её, но суть в том, что там KeyError: 'city'.
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Там двухуровневый мультииндекс, обращаться нужно так:
cities[('Города Российской Федерации','city')]
Можно было просто проверить cities.columns:
MultiIndex([('Города Российской Федерации', '№'),
('Города Российской Федерации', 'Герб'),
('Города Российской Федерации', 'city'),
('Города Российской Федерации', 'Регион'),
('Города Российской Федерации', 'Федеральный округ'),
('Города Российской Федерации', 'Население'),
('Города Российской Федерации', 'Основание илипервое упоминание'),
('Города Российской Федерации', 'Статус города[5]'),
('Города Российской Федерации', 'Прежние названия')],
)
Автор решения: MaxU
→ Ссылка
В этом случае следует правильно указать номер строки с заголовками (именами столбцов):
In [150]: tables = pd.read_html(url, header=[1])
In [151]: tables[0]
Out[151]:
№ Герб Город Регион Федеральный округ Население Основание илипервое упоминание Статус города[5] Прежние названия
0 1 NaN Абаза Хакасия Сибирский 17111 1867 1966.0 Абаканский Завод, Абаканско-Заводское
1 2 NaN Абакан Хакасия Сибирский 165183 1734 1931.0 Усть-Абаканское (до 1931)
2 3 NaN Абдулино Оренбургская область Приволжский 20663 1795 1923.0 NaN
3 4 NaN Абинск Краснодарский край Южный 34926 1863 1963.0 Абинское (до 1863);Абинская (до 1962)
4 5 NaN Агидель Башкортостан Приволжский 16365 1980 1991.0 NaN
... ... ... ... ... ... ... ... ... ...
1112 1113 NaN Ярославль Ярославская область Центральный 591486 1010 1071.0 NaN
1113 1114 NaN Ярцево Смоленская область Центральный 47853 1610 1926.0 NaN
1114 1115 NaN Ясногорск Тульская область Центральный 16804 1578 1958.0 Лаптево (до 1965)
1115 1116 NaN Ясный Оренбургская область Приволжский 16082 1961 1979.0 NaN
1116 1117 NaN Яхрома Московская область Центральный 13248 1841 1940.0 Суровцево, посёлок Покровской мануфактуры
[1117 rows x 9 columns]