使用 df2gsheets 将 pandas DF 从 python 导入 google 表格时出现数据格式问题

2023-12-10

我正在使用 df2gspread 将某个 pandas df 导入到谷歌表格中。该过程运行没有任何问题,但我想在 Gsheets 中操作的数字信息会作为文本导入。当我对以文本形式存储的数据使用基本数学运算时,它可以工作,但是当我尝试使用 Sheets 函数(例如求和、平均值和几乎任何其他函数)时,返回的值始终为零。另外,如果我尝试在 gsheet 本身内手动将文本转换为数字,它不会产生任何效果。

代码如下:

import pandas as pd
import gspread as gs
from df2gspread import df2gspread as d2g

result = tera.execute_response("select * from table_drive")
df = pd.DataFrame(result)

scope = ['https://spreadsheets.google.com/feeds',
         'https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name(
    'json_gsheets.json', scope)
gc = gs.authorize(credentials)

spreadsheet_key = 'insert_wks_key_here'
wks = 'import'
d2g.upload(df, spreadsheet_key, wks, credentials=credentials, row_names=False,start_cell = 'B3')

这会正确插入数据,但所有内容都以文本形式不可撤销地存在。

有人可以帮忙吗?

提前致谢!


这个答案怎么样?

Issue

当我看到df2gspread的脚本,似乎该方法upload使用的方法update_cells()。在这种情况下,在 gspread 中,“valueInputOption”的默认值为RAW。 df2gspread 使用默认值。这样,输入的数值就带有单引号'在顶部字符处。我认为你的问题的原因就是这个。

在这里,为了实现您的目标,我想提出以下两种模式。

模式一:

在此模式中,修改了 df2gspread 的脚本。请修改的功能upload如下。现阶段我认为有3个部分。

From:

wks.update_cells(cell_list)

To:

wks.update_cells(cell_list, value_input_option='USER_ENTERED')

模式2:

在该模式中,使用了gspread中的“values_update”方法。

示例脚本:

import pandas as pd
import gspread as gs
from df2gspread import df2gspread as d2g

result = tera.execute_response("select * from table_drive")
df = pd.DataFrame(result)

scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name('json_gsheets.json', scope)

gc = gs.authorize(credentials)
spreadsheet_key = 'insert_wks_key_here'
wks = 'import'
spreadsheet = gc.open_by_key(spreadsheet_key)
values = [df.columns.values.tolist()]
values.extend(df.values.tolist())
spreadsheet.values_update(wks, params={'valueInputOption': 'USER_ENTERED'}, body={'values': values})
  • 你可以看到USER_ENTERED在这种情况下也使用。

参考:

  • 值输入选项
  • 值更新
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 df2gsheets 将 pandas DF 从 python 导入 google 表格时出现数据格式问题 的相关文章

随机推荐

  • 在 Rails 4 中添加参考列迁移

    一个用户有很多上传 我想添加一列uploads引用的表user 迁移应该是什么样子 这是我所拥有的 我不确定是否应该使用 1 user id int or 2 user references 我什至不确定 2 是否有效 只是想以 轨道 的方
  • 仅显示 Rails ERB 中存在的记录的优雅方式

    我发现在显示有关用户的信息时 我在 ERB 视图中使用了大量重复代码 沿着 我基本上对我认为的所有内容都这样做 以避免错误 例如 可能没有所有新字段的老用户 有一个更好的方法吗 将逻辑移至助手中 def name for user user
  • 为什么我的 UILocalNotification 不播放任何声音?

    这让我抓狂 我相信我已经尝试了所有可能的方法 但我的手机仍然决定保持沉默 我只想让它玩any当我呈现本地通知时 现在会发出声音 目前 无论是UILocalNotificationDefaultSoundName我添加到应用程序包中的自定义声
  • 在没有模拟器的外部设备上安装 sqlite3

    我是一名学生 我想了解如何在 android 上使用 sqlite3 我的朋友尝试运行 Android 模拟器并开始输入命令adb e shell su 浏览模拟器存储 然后运行sqlite3 mydb db 一切都很顺利 但是每当我们尝试
  • Flutter将图像转换为base64并将base64字符串转换为图像[重复]

    这个问题在这里已经有答案了 您好 我想将图像转换为 base64 字符串 然后将其转换回图像 我就是这样做的 File pickedImage await ImagePicker pickImage source ImageSource g
  • 对 c 中的 -(--a) 与 --(-a) 感到困惑

    与混淆 and 操作员 int a 10 printf d n a valid output 9 但是 使用以下内容时会出现问题 printf d n a error invalid Why The and 运算符仅适用于左值 不适用于值
  • ifelse 没有按预期循环行

    我的数据看起来像这样 df lt read table tc lt textConnection var1 var2 var3 var4 1 1 7 NA 4 4 NA 6 2 NA 3 NA 4 4 4 4 1 3 1 1 header
  • 使用载波和雾将文件上传到 S3 时缺少要求

    我收到这个错误Missing required arguments aws access key id aws secret access key 这看起来很奇怪 因为我已经在初始化程序文件夹中添加了 Carrierwave rb 当我使用
  • 评估 Python 中动态生成的语句

    我需要动态生成 python 代码并使用 eval 函数执行它 我想做的是生成一些 导入 和 赋值 我的意思是 我需要生成这个字符串来评估它eval x x import testContextSummary import util tes
  • 如果应用程序以 CTRL_CLOSE_EVENT 退出,则 boost::log add_file_log 不会写入

    我使用的是 Windows 7 在控制台应用程序中使用 v1 54 中的 boost log 我使用带有旋转的 add file log 只要我的 main 函数退出 它就可以正常工作 但是 如果使用 powershell CloseMai
  • 如何在 JDBC 中启动事务?

    Connection setTransactionIsolation int warns 注意 如果在事务期间调用此方法 则结果是实现定义的 这就提出了一个问题 如何在 JDBC 中开始事务 如何结束交易很清楚 但如何开始交易却不清楚 If
  • 使用坐标以编程方式旋转形状

    如果我有一些使用坐标数组定义的形状 例如 30 30 30 30 30 30 30 30 和边缘定义使用 0 1 0 3 1 2 2 3 做一个正方形 如何以编程方式告诉形状在 JavaScript 中以 0 gt 359 的角度在中心旋转
  • Quickblox:删除内容项(图片文件/blob)时出现问题

    当我尝试删除以 PNG 图片文件形式存储在后端数据库中的内容项 用户的图片 blob 项 时 我遇到了一个奇怪的问题 删除过程没有错误 但给出 422 Unprocessable Entity 这是什么意思 在 Quickblox 管理面板
  • “代码 。”命令在命令提示符下不起作用

    使用 Angular cli 创建 Angular 应用程序后 我尝试使用 code 在 Visual Studio Code 中打开解决方案 命令提示符下的命令 但显示以下错误 有什么建议吗 如果您使用的是 Windows 请确保您的vs
  • Android:如何将蓝牙连接传递给另一个活动?

    我有我的第一个活动 其中建立了 BT 连接 有一个选项呈现给用户 并且根据他们的选择 将加载不同的活动 问题是 这两项活动都需要 BT 连接 而且我不认为为了建立另一个连接而破坏一个连接有什么意义 有没有办法可以传递活动之间的连接 有人给我
  • 当我运行程序时,LLDB 产生“数据包返回错误 8”

    我一直在尝试使用 LLDB 查找程序中分段错误的位置 我一直在使用 Ubuntu shellrepl it并使用编译我的代码clang 7 pthread std c 17 o main main cpp g并且程序编译成功 接下来 我跑l
  • Magento - 删除 1.4.2 中的愿望清单链接?

    以前在 Magento 中 使用以下内容添加愿望清单链接 在 Wishlist xml 中
  • 是否可以在运行时获取类型参数?

    我知道在 Java 中 由于擦除 我们在运行时没有参数化类型 但是是否有可能在运行时获取那些被擦除的参数呢 让我举一些例子 public class MyClass
  • Ruby 中的超级关键字

    这段代码中的 super 是做什么用的 def initialize options block filter options delete filter 1 super end 据我所知 这就像递归调用该函数 对吗 不 super 调用父
  • 使用 df2gsheets 将 pandas DF 从 python 导入 google 表格时出现数据格式问题

    我正在使用 df2gspread 将某个 pandas df 导入到谷歌表格中 该过程运行没有任何问题 但我想在 Gsheets 中操作的数字信息会作为文本导入 当我对以文本形式存储的数据使用基本数学运算时 它可以工作 但是当我尝试使用 S