Решение проблемы с чтением второго листа 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' отсутствуют во втором листе таблицы. Это может быть вызвано несколькими причинами:

  • Второй лист имеет другую структуру столбцов
  • Столбцы называются иначе (например, используют другие обозначения)
  • Таблица на втором листе пуста или содержит данные в другом формате

Для решения проблемы рекомендуется:

  1. Проверить фактические названия столбцов во втором листе через print(df.columns)
  2. Убедиться, что второй лист содержит ожидаемые данные
  3. Использовать более гибкие методы обращения к столбцам