如何正确地将 pandas 数据框格式化为 google 工作表 api
How to format pandas dataframe into google sheets api properly
我正在尝试通过 google 工作表 API 从 python 到 google 工作表中获取一些数据。数据通过 df 格式化,其中 amounts_a、shoesize_a 和 frequency_a 都是列表
df_asks = pd.DataFrame(
{
"Asks(USD)":amounts_a,
"Shoes Size(US)":shoesize_a,
"Frequency":frequency_a
}
)
Present dataframe format, printed
用于更新电子表格的代码:
service = discovery.build('sheets', 'v4', credentials=creds)
spreadsheetId = "xxx"
range_ = sheetname + coordinate
value_input_option = "USER_ENTERED"
value_range_body = {
"majorDimension":"COLUMNS",
"values":
[data]
}
request = service.spreadsheets().values().update(spreadsheetId=spreadsheetId, range=range_,
valueInputOption=value_input_option, body=value_range_body)
print (request)
response = request.execute()
尝试使用当前数据格式更新电子表格值时,我收到以下错误
“TypeError:DataFrame 类型的对象不是 JSON 可序列化的”
我使用 (.to_json()) 将数据帧转换为 json,然后工作,但电子表格中的数据格式是 entire dataframe in one line
如何将此数据框转换为格式正确的工作表(如印刷版所示)?
我刚开始使用数据帧和 api,如有任何帮助,我们将不胜感激
修改点:
- 在这种情况下,SheetsAPI中spreadsheets.values.update方法的
values
属性的值需要是二维数组。
- 根据您的问题,我了解到您可能希望通过将
df_asks
转换为 data
来将 df_asks
的值添加到电子表格中。
在这个回答中,我想提出以下修改。
修改后的脚本:
本次修改data
修改如下
从:
value_range_body = {
"majorDimension":"COLUMNS",
"values":
[data]
}
到:
data = [df_asks.columns.values.tolist()]
data.extend(df_asks.values.tolist())
value_range_body = {"values": data}
- 当你不想包含 header 行时,我认为你也可以将
data
用作 data = df_asks.values.tolist()
。
参考文献:
我正在尝试通过 google 工作表 API 从 python 到 google 工作表中获取一些数据。数据通过 df 格式化,其中 amounts_a、shoesize_a 和 frequency_a 都是列表
df_asks = pd.DataFrame(
{
"Asks(USD)":amounts_a,
"Shoes Size(US)":shoesize_a,
"Frequency":frequency_a
}
)
Present dataframe format, printed
用于更新电子表格的代码:
service = discovery.build('sheets', 'v4', credentials=creds)
spreadsheetId = "xxx"
range_ = sheetname + coordinate
value_input_option = "USER_ENTERED"
value_range_body = {
"majorDimension":"COLUMNS",
"values":
[data]
}
request = service.spreadsheets().values().update(spreadsheetId=spreadsheetId, range=range_,
valueInputOption=value_input_option, body=value_range_body)
print (request)
response = request.execute()
尝试使用当前数据格式更新电子表格值时,我收到以下错误 “TypeError:DataFrame 类型的对象不是 JSON 可序列化的”
我使用 (.to_json()) 将数据帧转换为 json,然后工作,但电子表格中的数据格式是 entire dataframe in one line
如何将此数据框转换为格式正确的工作表(如印刷版所示)?
我刚开始使用数据帧和 api,如有任何帮助,我们将不胜感激
修改点:
- 在这种情况下,SheetsAPI中spreadsheets.values.update方法的
values
属性的值需要是二维数组。 - 根据您的问题,我了解到您可能希望通过将
df_asks
转换为data
来将df_asks
的值添加到电子表格中。
在这个回答中,我想提出以下修改。
修改后的脚本:
本次修改data
修改如下
value_range_body = {
"majorDimension":"COLUMNS",
"values":
[data]
}
到:
data = [df_asks.columns.values.tolist()]
data.extend(df_asks.values.tolist())
value_range_body = {"values": data}
- 当你不想包含 header 行时,我认为你也可以将
data
用作data = df_asks.values.tolist()
。