【问题标题】:How to format pandas dataframe into google sheets api properly如何将 pandas 数据框正确格式化为 google sheet api
【发布时间】:2021-03-10 22:05:38
【问题描述】:

我正在尝试通过 google sheet API 从 python 获取一些数据到 google sheet。数据通过 df 格式化,其中 amount_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 的新手,任何帮助将不胜感激

【问题讨论】:

    标签: python json dataframe google-sheets google-sheets-api


    【解决方案1】:

    修改点:

    • 在这种情况下,Sheets API 中的电子表格.values.update 方法的values 属性的值必须是二维数组。
    • 根据您的问题,我了解到您可能希望通过将 df_asks 转换为 datadf_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}
    
    • 当你不想包含标题行时,我认为你也可以使用data作为data = df_asks.values.tolist()

    参考资料:

    【讨论】:

    • @Mete Bulbul 感谢您的回复。我很高兴你的问题得到了解决。也谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    相关资源
    最近更新 更多