【发布时间】:2020-06-18 18:43:32
【问题描述】:
我正在使用 google sheet API 获取数据,然后将其传递给 Pandas,以便我可以轻松地处理数据。
假设我想获得一张包含以下数据的工作表(描述为 JSON 对象,因为这里没有很好地展示表格)
{
columns: ['Name', 'Age', 'Tlf.' 'Address'],
data: ['Julie', '35', '12345', '8 Leafy Street']
}
Sheets 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 工作表,描述为键:值数据类型
{
columns: ['Name', 'Age', 'Tlf.' 'Address'],
data: ['Julie', '35', '', '']
}
我会收到以下回复
{
'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 点,我还没有找到对我有帮助的答案。
如果有人对我如何解决这个问题有任何想法,我将不胜感激。
干杯!
【问题讨论】:
标签: python python-3.x pandas google-sheets google-sheets-api