【发布时间】:2019-07-29 23:09:17
【问题描述】:
我从 google sheet API 中的 spreadsheets.values.get 方法获得了以下 .json 响应
{'majorDimension': 'ROWS',
'range': 'Sheet1!A1:D5',
'values': [['Item', 'Cost', 'Stocked', 'Ship Date'],
['Wheel', '$20.50', '4', '3/1/2016'],
['Door', '$15', '2', '3/15/2016'],
['Engine', '$100', '1', '3/20/2016'],
['Totals', '$135.50', '7', '3/20/2016']]}
在上面的 json 响应中,明显的列标题是 ['Item','Cost','Stocked','Ship Date'],但 .json 响应似乎将这些列标题包含在“值”标签下的实际数据记录中。
我的目的是将这个 .json 响应读入 pandas df,其中列名来自“值”['Item','Cost','Stocked','Ship Date'] 的第一行。我知道您可以使用 pandas json_normalize 方法来展平“值”记录,但我还无法分隔列标题 - 谁能帮我将“值”的第一行过滤成一列标题?
建议我执行以下操作:
response = {'majorDimension': 'ROWS',
'range': 'Sheet1!A1:D5',
'values': [['Item', 'Cost', 'Stocked', 'Ship Date'],
['Wheel', '$20.50', '4', '3/1/2016'],
['Door', '$15', '2', '3/15/2016'],
['Engine', '$100', '1', '3/20/2016'],
['Totals', '$135.50', '7', '3/20/2016']]}
sheet_values = response.get('values', [])
df = pd.DataFrame(sheet_values['values'],columns=sheet_values['values'][0]).drop(0)
上面的代码给我以下错误..
TypeError: list indices must be integers or slices, not str
【问题讨论】:
标签: python-3.x pandas google-sheets-api