gpt4 book ai didi

python - Google Sheets API v4 评论数据到 pandas df,而不是值

转载 作者:行者123 更新时间:2023-12-01 08:41:06 25 4
gpt4 key购买 nike

我正在获取工作表 A1:E7 范围的注释。 B1E1D4B7 中有注释。

result = gsheets.service.spreadsheets().get(spreadsheetId=key, fields="sheets/data/rowData/values/note").execute()
data=result['sheets'][0]['data'][0]

生成以下字典:

{u'rowData': [
{u'values': [{}, {u'note': u'B1 notes'}, {}, {}, {u'note': u'E1 notes'}]},
{},
{},
{u'values': [{}, {}, {}, {u'note': u'D4 notes'}]},
{},
{},
{u'values': [{}, {u'note': u'B7 notes'}]}
]
}

现在我如何将其放入模拟 A1:E7 范围的 7x5 数据帧中?我想对空白单元格使用 ''

最佳答案

这个解决方案有点难以阅读,但在我的测试中它有效。第一步是从顶级字典列表构建一个临时 DataFrame,其中每个(可能为空)字典代表原始电子表格中的一行。

假设您的字典名为d:

import pandas as pd
from pandas.io.json import json_normalize

temp = pd.DataFrame.from_dict(d['rowData'])
temp
values
0 [{}, {'note': 'B1 notes'}, {}, {}, {'note': 'E1 notes'}]
1 NaN
2 NaN
3 [{}, {}, {}, {'note': 'D4 notes'}]
4 NaN
5 NaN
6 [{}, {'note': 'B7 notes'}]

# JSON-normalize each non-null row
res = (pd.DataFrame(temp['values'].map(lambda x:
json_normalize(x).values.flatten()
if x is not np.nan else [np.nan])
.values
.tolist()
)
).fillna('')

res.index = range(1, res.shape[0]+1)
res.columns = list('ABCDE')

res
A B C D E
1 B1 notes E1 notes
2
3
4 D4 notes
5
6
7 B7 notes

关于python - Google Sheets API v4 评论数据到 pandas df,而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53492502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com