Google将APIv4注释数据表转换为df,而不是值

2024-06-16 14:18:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了一张纸上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数据帧中?我想对空白单元格使用^ {CD6}}。你知道吗


Tags: dataa1serviceresultb1notenotesvalues
1条回答
网友
1楼 · 发布于 2024-06-16 14:18:54

这个解决方案有点难读,但在我的测试中是有效的。第一步是从dict的顶级列表构建一个临时数据帧,其中每个dict(可能是空的)表示原始电子表格中的一行。你知道吗

假设您的字典名为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                      

相关问题 更多 >