我正在使用GoogleSheetsAPI获取数据,然后将这些数据传递给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表,它被描述为key:value数据类型
{
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
填充我的响应关于第1点。我想我可以将x
{x
等于length_of_column_heading_array
-length_of_data_array
。然而,这看起来确实很丑陋,也许有一种更优雅的方式
关于第二点,我还没有找到一个对我有帮助的答案
如果有人对我如何解决这个问题有任何想法,我将非常感激
干杯
如果有人感兴趣,下面是我如何解决这个问题的
首先,我们需要从Sheets API获取所有数据
现在,我想遍历每一列,并确保每一行的列表包含的元素数与第一行包含列标题的元素数相同
最后介绍了数据的填充方法
我当然不是说这是最好或最优雅的解决方案,但它为我做到了
希望这对别人有帮助
同样的想法,也许更简单一些:
获取原始值
然后在迭代时完成
相关问题 更多 >
编程相关推荐