Текст не читается при использовании pd.read_csv() на листе Google

Я пытаюсь прочитать Google Sheet с помощью pandas pd.read_csv(), однако, когда столбцы содержат ячейки с текстом и другие ячейки с числовыми значениями, текст не читается. Мой код:

def build_sheet_url(doc_id, sheet_id):
    return r"https://docs.google.com/spreadsheets/d/{}/gviz/tq?tqx=out:csv&sheet = {}".format(doc_id, sheet_id)

sheet_url = build_sheet_url(doc_id, sheet_name)
df = pd.read_csv(sheet_url)



> df
   Column1  Column2
0       12       21
1       13       22
2       14       23
3       15       24

Вот как выглядит электронная таблица:

Я пытался использовать dtype=str и dtype=object, но не смог отобразить текст в моем фрейме данных. Указание кодировки encoding='utf-8' тоже не помогло.

1
0
104
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это связано с тем, что запрос не поддерживает смешанные типы данных:

Тип данных. Поддерживаемые типы данных: строка, число, логическое значение, дата, дата, время и время дня. Все значения столбца будут иметь тип данных, соответствующий типу столбца, или нулевое значение. Эти типы похожи, но не идентичны типам JavaScript.

Используйте конечную точку /export (или конечную точку drive-api):

https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID]/export?format=[FORMAT]&gid=(SHEET_ID)&range=(A1NOTATION)

Связанный:

При использовании &gid=(SHEET_ID) я получаю HTTPError: Bad Request, но замена на &sheet=(SHEET_ID) решила проблему. Спасибо @Мастер!

NDen 06.10.2022 11:23

@NDen Подумайте о том, чтобы принять ответ, нажав на галочку слева от этого сообщения. Что касается (SHEET_ID), это должен быть фактический идентификатор листа. Вы можете увидеть адрес: &gid=(SHEET_ID)

TheMaster 06.10.2022 11:36

Другие вопросы по теме