Я использую API листов Google для получения данных, которые затем передаю на Pandas, чтобы я мог легко работать с данными.
Допустим, я хочу получить лист со следующими данными ( изображен как объект JSON, поскольку таблицы здесь представлены не очень хорошо)
{
columns: ['Name', 'Age', 'Tlf.' 'Address'],
data: ['Julie', '35', '12345', '8 Leafy Street']
}
API листов вернет что-то вроде этого:
{
'range': 'Cases!A1:AE999',
'majorDimension': 'ROWS',
'values':
[
['Name', 'Age', 'Tlf.', 'Address'],
['Julie', '35', '12345', '8 Leafy Street']
]
}
Это здорово и позволяет мне легко передавать заголовки столбцов и данные в Pandas без особых хлопот. Я делаю это следующим образом:
values = sheets_api_result["values"]
df = pd.DataFrame(values[1:], columns=values[0])
Моя проблема
Если у меня есть Gsuite Sheet, который выглядит, как в таблице ниже, обозначен как ключ: тип данных типа
{
columns: ['Name', 'Age', 'Tlf.' 'Address'],
data: ['Julie', '35', '', '']
}
I получит следующий ответ:
{
'range': 'Cases!A1:AE999',
'majorDimension': 'ROWS',
'values':
[
['Name', 'Age', 'Tlf.', 'Address'],
['Julie', '35']
]
}
Обратите внимание, что длины двух массивов не равны, и что вместо возвращаемых значений None
или null
данные просто отсутствуют в ответе .
При работе с этими данными в моем коде я получаю ошибку, которая выглядит примерно так:
ValueError: 4 columns passed, passed data had 2 columns
Итак, насколько я могу судить, у меня есть два варианта:
- Придумайте умный способ дополнить мой ответ, где это необходимо,
None
- Если возможно, проинструктируйте API вернуть нулевое значение в JSON, где существуют нулевые значения, особенно когда в последнем столбце (ах) вообще нет данных.
Что касается пункта 1. Я думаю, что могу добавить x
None
значений в список, где x
равно length_of_column_heading_array
- length_of_data_array
. Однако это кажется уродливым, и, возможно, есть более элегантный способ сделать это.
Что касается пункта 2, мне не удалось найти ответ, который мне поможет.
Если у кого-нибудь есть идеи, как я могу это решить, я был бы очень благодарен.
Ура!