在 Pandas 中加载通用 Google 电子表格

2024-03-09

当我尝试在 pandas 中加载 Google 电子表格时

from StringIO import StringIO  
import requests
r = requests.get('https://docs.google.com/spreadsheet/ccc?key=<some_long_code>&output=csv')
data = r.content
df = pd.read_csv(StringIO(data), index_col=0)

我得到以下信息:

CParserError: Error tokenizing data. C error: Expected 1316 fields in line 73, saw 1386

为什么?我认为人们可以用数据来识别电子表格的行和列集,并分别使用电子表格的行和列作为数据帧索引和列(对于任何空的内容,使用 NaN )。为什么会失败?


我的这个问题表明了如何将 Google 电子表格 CSV 导入 Pandas 数据框 https://stackoverflow.com/questions/19611729/getting-google-spreadsheet-csv-into-a-pandas-dataframe

正如一位评论员指出的那样,您没有要求提供 CSV 格式的数据,您在网址末尾有“编辑”请求 您可以使用此代码并查看它在电子表格上的工作情况(顺便说一句,电子表格需要公开......)也可以执行私人工作表,但这是另一个主题。

from StringIO import StringIO  # got moved around in python3 if you're using that.

import requests
r = requests.get('https://docs.google.com/spreadsheet/ccc?key=0Ak1ecr7i0wotdGJmTURJRnZLYlV3M2daNTRubTdwTXc&output=csv')
data = r.content

In [10]: df = pd.read_csv(StringIO(data), index_col=0,parse_dates=['Quradate'])

In [11]: df.head()
Out[11]: 
          City                                            region     Res_Comm  \
0       Dothan  South_Central-Montgomery-Auburn-Wiregrass-Dothan  Residential   
10       Foley                              South_Mobile-Baldwin  Residential   
12  Birmingham      North_Central-Birmingham-Tuscaloosa-Anniston   Commercial   
38       Brent      North_Central-Birmingham-Tuscaloosa-Anniston  Residential   
44      Athens                 North_Huntsville-Decatur-Florence  Residential   

          mkt_type            Quradate  National_exp  Alabama_exp  Sales_exp  \
0            Rural 2010-01-15 00:00:00             2            2          3   
10  Suburban_Urban 2010-01-15 00:00:00             4            4          4   
12  Suburban_Urban 2010-01-15 00:00:00             2            2          3   
38           Rural 2010-01-15 00:00:00             3            3          3   
44  Suburban_Urban 2010-01-15 00:00:00             4            5          4   

用于获取 csv 输出的新 Google 电子表格 URL 格式为

https://docs.google.com/spreadsheets/d/177_dFZ0i-duGxLiyg6tnwNDKruAYE-_Dd8vAQziipJQ/export?format=csv&id

好吧,他们再次稍微改变了 url 格式,现在你需要:

https://docs.google.com/spreadsheets/d/177_dFZ0i-duGxLiyg6tnwNDKruAYE-_Dd8vAQziipJQ/export?format=csv&gid=0 #for the 1st sheet

我还发现我需要执行以下操作来处理 Python 3(对上述内容稍作修改):

from io import StringIO 

并获取文件:

guid=0 #for the 1st sheet
act = requests.get('https://docs.google.com/spreadsheets/d/177_dFZ0i-duGxLiyg6tnwNDKruAYE-_Dd8vAQziipJQ/export?format=csv&gid=%s' % guid)
dataact = act.content.decode('utf-8') #To convert to string for Stringio
actdf = pd.read_csv(StringIO(dataact),index_col=0,parse_dates=[0], thousands=',').sort()

actdf 现在是一个完整的 pandas 数据框,带有标题(列名称)

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

在 Pandas 中加载通用 Google 电子表格 的相关文章

随机推荐

  • UseDefaultCredentials 与 Exchange Web 服务

    我是一个相当新的程序员 我在工作中承担的任务之一是使用我们的自定义工具来创建草稿电子邮件并将其放入运行该工具的用户的草稿电子邮件文件夹中 我们目前使用 Exchange Server 2010 但正在迁移到 Exchange Online
  • Ajax 错误:SyntaxError:预期表达式,得到“<”

    我正在尝试从我的服务器登录到另一台服务器到我的其他站点 但这个错误每次都会出现 SyntaxError expected expression got lt
  • NoMethodError:nil 的未定义方法“匹配”:NilClass

    我的申请有一个大问题 我的网站位于 AWS 上 今天早上我进行了上限生产部署以在线添加新版本 但我的网址不再有效 这对我来说是一个非常非常大的问题 所以我把我的问题放在这里 I use Ruby on Rails EC2 S3 and sh
  • 线程意外唤醒

    我预计以下示例中的第二个线程会挂起 因为它等待一个没有相应通知的对象 相反 它会进入 println 可能是由于虚假唤醒 public class Spurious public static void main String args T
  • 为什么这个 VBA 生成的 QR 码会卡顿? (仅限条形码-vba-宏)

    Context 我在用仅条形码 VBA 宏 https code google com archive p barcode vba macro only 在这个帖子 https stackoverflow com a 31663859 66
  • 如何使用 fpdf php 创建双条形图?

    我在我的 php 项目中使用 FPDF 我希望在我的项目中拥有像上图这样的 PDF 版本双条形图 FPDF 有一种方法可以创建饼图和条形图http www fpdf org en script script28 php http www f
  • 如何加快大型 xlsx 文件的导入速度?

    我想要处理一个 200MB 的大型 Excel xlsx 文件 包含 15 个工作表和 100 万行 每行 5 列 并根据数据创建 pandas 数据框 Excel 文件的导入速度非常慢 最多 10 分钟 不幸的是 Excel 导入文件格式
  • java将列表字符串写入csv文件

    我有一些如下所示的数组字符串 请注意 每个玩家后面都有空格 显示不同的行 user1 track1 player1 user1 track2 player2 user1 track3 player3 我想根据行数 此处为空格 将该数组分为两
  • 使用 win32com 从 Python 加载 Excel 加载项

    我从这里的各种问题中看到 如果使用以下命令从 Python 打开 Excel 实例 xl win32com client gencache EnsureDispatch Excel Application xl Visible True w
  • 长按ListFragment

    我正在使用 ListFragment 并执行 onListItemClick 一切正常 但现在我想使用长项目点击 例如 setOnItemLongClickListener new OnItemLongClickListener for a
  • 如何从对象中递归删除子对象?

    我正在研究解决方案 我已经创建了基本的树形表格 每当用户单击展开时 与单击的行相关的数据将根据行数据显示在其下方 我已经实现了展开 折叠至 N 个嵌套级别的基本功能 但我只遇到一个问题 所以基本上所有行都有基于具有多个值的数组的条件展开按钮
  • 为什么需要内存对齐? [复制]

    这个问题在这里已经有答案了 可能的重复 内存对齐的目的 https stackoverflow com questions 381244 purpose of memory alignment 我在网上读了一些关于内存对齐的文章 可以理解
  • 从查询中检索单个值

    我正在尝试根据字符串字段用户名从单个表中检索整数值 我已经尝试使用存储过程和直接文本 当我执行存储过程时 我得到了正确的返回值 然而 正确的结果并没有出现 这是两组代码 直接文字 public int GetUserRole string
  • 如何创建一个具有透明背景和阴影的形状,但形状轮廓后面的阴影不应该是可见的?

    这里有点类似的问题 但答案是只删除海拔和阴影 不是我想要的 Android CardView 透明时有奇怪的边框 https stackoverflow com questions 31624085 android cardview wit
  • 为什么我的 VB6 变体会根据分配时间而变化?

    我是 VB6 以及任何形式的 Visual Basic 开发新手 我遇到了一个问题 下面可能存在词汇错误 因为我将代码格式化为在此处的帖子中更具可读性 但问题的本质仍然存在 这是代码 我的问题是显示的值MsgBox调用 第二组 引用变量的调
  • 具有 TestCoverageEnabled 的 Android 多模块项目会引发数据绑定错误

    我有一个多模块项目 其结构如下 这是解决此错误的代码 https github com ajitsing MultiModuleAndroid https github com ajitsing MultiModuleAndroid Roo
  • Spring Data:支持“删除”吗?

    我正在使用 Spring JPA 进行数据库访问 我能够找到诸如 findByName 和 countByName 之类的示例 我不必为此编写任何方法实现 我希望找到根据某些条件删除一组记录的示例 Spring JPA是否支持类似delet
  • 使用范围作为字典中的键值,最有效的方法是什么?

    我一直想知道如果定义范围的给定值不重叠 是否有某种数据结构或巧妙的方法使用字典 O 1 查找 来返回值 到目前为止 我一直在想 如果范围有一些恒定的差异 0 2 2 4 4 6 等 或者可以在 O log n 时间 因此 例如给定一本字典
  • 如何使用 jQuery 使 div 平滑地跟随滚动?

    在我的容器中有一些部分 框 但最后一个框应该跟随滚动当其他盒子都不可见时 因此 当用户向下滚动时 他会看到一个正常的侧边栏 但是当用户向下滚动足够多时 侧边栏结束 但最后一个框开始出现在屏幕顶部 我在不同类型的网站上见过很多这样的情况 我现
  • 在 Pandas 中加载通用 Google 电子表格

    当我尝试在 pandas 中加载 Google 电子表格时 from StringIO import StringIO import requests r requests get https docs google com spreads