Решение проблемы с чтением второго листа Google таблицы в pandas
При работе с Google таблицами через библиотеку pandas может возникнуть ситуация, когда первый лист читается корректно, а при попытке прочитать второй лист появляется ошибка.
Исходная рабочая ситуация
Чтение первого листа таблицы выполняется успешно:
tables = pd.read_html('https://docs.google.com/********', encoding='utf-8')
df = pd.DataFrame(tables[0])
first_rowA = df[['A', 'B', 'C']].dropna()
print(first_rowA.to_string(index=False, header=False))Проблема при чтении второго листа
При попытке прочитать второй лист (изменив индекс на 1) возникает ошибка:
df = pd.DataFrame(tables[1])
first_rowA = df[['A', 'B', 'C']].dropna()Traceback ошибки:
Traceback (most recent call last):
File "c:\progect\bot.py", line 23, in
first_rowA = df[['A', 'B', 'C']].dropna()
File "C:\Users\***\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\frame.py", line 4119, in __getitem__
indexer = self.columns._get_indexer_strict(key, "columns")[1]
File "C:\Users\***\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\indexes\base.py", line 6212, in _get_indexer_strict
self._raise_if_missing(keyarr, indexer, axis_name)
File "C:\Users\***\AppData\Local\Programs\Python\Python310\lib\site-packages\pandas\core\indexes\base.py", line 6261, in _raise_if_missing
raise KeyError(f"None of [{key}] are in the [{axis_name}]")
KeyError: "None of [Index(['A', 'B', 'C'], dtype='object')] are in the [columns]"Альтернативный подход и его результаты
При проверке работы метода напрямую:
tables = pd.read_html('https://docs.google.com/****************', encoding='utf-8')
first_rowA = tables[1]
print(first_rowA.head())В данном случае выводятся имена первого и второго листа таблицы. Однако если изменить индекс на 0:
first_rowA = tables[0]то таблица первого листа выводится корректно и полностью.
Анализ проблемы
Ошибка KeyError указывает на то, что столбцы с именами 'A', 'B', 'C' отсутствуют во втором листе таблицы. Это может быть вызвано несколькими причинами:
- Второй лист имеет другую структуру столбцов
- Столбцы называются иначе (например, используют другие обозначения)
- Таблица на втором листе пуста или содержит данные в другом формате
Для решения проблемы рекомендуется:
- Проверить фактические названия столбцов во втором листе через
print(df.columns) - Убедиться, что второй лист содержит ожидаемые данные
- Использовать более гибкие методы обращения к столбцам