【问题标题】:How to delete/remove row from the google spreadsheet using gspread lib. in python?如何使用 gspread lib 从谷歌电子表格中删除/删除行。在蟒蛇?
【发布时间】:2013-01-31 12:17:41
【问题描述】:

我想使用gspread 库从谷歌电子表格中删除一条记录。

另外,如何获取谷歌电子表格中的行数/记录数? gspread 提供了.row_count(),它返回总行数,包括那些空白的,但我只想统计有数据的行。

【问题讨论】:

    标签: python google-sheets gspread


    【解决方案1】:

    自 gspread 0.5.0 版(2016 年 12 月)起,您可以使用 delete_row() 删除一行。

    例如,要删除索引为 42 的行,您可以:

    worksheet.delete_row(42)
    

    【讨论】:

    • 我在一个有 1000 行的电子表格上尝试 delete_row(15),但 10 分钟后它仍在运行。预计需要那么长时间吗?删除行时是否对下面的行进行任何复制粘贴?
    【解决方案2】:

    您能否准确指定删除行/记录的方式?他们在一张纸的中间吗?底部?顶?

    我有一种情况,我想在处理完数据后擦除除标题之外的所有数据。为此,我只调整了工作表的大小两次。

    #first row is data header to keep    
    worksheet.resize(rows=1)
    worksheet.resize(rows=30)
    

    这是一个简单的强力解决方案,用于擦除整张工作表而不删除工作表。

    用数据计算行数

    一种方法是使用get_all_records() 将数据下载到json 对象中,然后检查该对象的长度。该方法返回最后一个非空白行之上的所有行。如果后面的行不是空白但不是尾随空白,它将返回空白行。

    【讨论】:

    • 我发现这个答案真的很有帮助。速度是最好的。
    • 对我来说也一样,确实比使用delete_row()依次删除所有行要高效得多
    • 这个方法真的很有用,我觉得他们应该更新文档中这个resize函数的用法
    【解决方案3】:

    阅读源代码似乎没有直接删除行的方法 - 只有添加它们的方法或 .resize() 调整工作表大小的方法。 在获取行号时,有一个 .row_count() 方法应该可以为您完成这项工作。

    【讨论】:

    • 感谢您的回复..我知道没有删除/删除记录的方法,在第二点,row_count 给出了包括空白数据的一个或多个行,但我只想计算那些有数据的行
    • 那你的问题不够详细。在这种情况下,您可以遍历每一行,检查它是否包含任何数据,如果包含则计算它。
    • 再次感谢,但假设电子表格中有 1000 条记录(包括空白数据)并一一检查所有行......这需要太多时间......它不适合我...
    • 你真的试过了吗?你测量过需要多长时间吗?对今天的计算机 cpu 来说,对 1000 多条记录进行迭代几乎没有任何意义,您应该一眨眼就得到结果。
    • 同样的——先试一试,稍后再衡量和抱怨;)另外,似乎:a)你没有其他选择,b)谷歌电子表格限制为 400,000 个单元格,所以你不会找到自己在 1000k 行的情况下。
    【解决方案4】:

    添加到@AsAP_Sherb 答案:

    如果你想计算有多少行,不要使用get_all_records() - 而是使用worksheet.col_values(1),然后计算它的长度。 (而不是得到整个表,你只得到一列) 我认为这会更节省时间(并且肯定会节省内存)

    【讨论】:

      【解决方案5】:

      worksheet.delete_row(42) 已弃用(2021 年 12 月)。现在您可以使用

      获得相同的结果
      worksheet.delete_rows(42)
      

      新功能增加了可以同时删除多行的功能

      worksheet.delete_row(42, 3)
      

      它将删除接下来的三行,从第 42 行开始。

      注意它从 1 开始计算行数(所以不是从零开始的编号)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-20
        • 2016-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多