【问题标题】:Error reading cvs with pandas from google drive url从谷歌驱动器 url 读取带有熊猫的 csv 时出错
【发布时间】:2021-04-29 11:32:47
【问题描述】:

我正在尝试从谷歌驱动器中读取带有熊猫的 cvs 文件。 Pandas 从我的计算机读取它时正确,但是当我尝试从我从谷歌驱动器获取的 URL 中读取它以共享文件时,它似乎正在读取其他内容,或者谷歌驱动器对文件做了一些奇怪的事情。 ..这是我所做的:

alread_url = 'https://drive.google.com/file/d/1am7jNHA6Lewzws_K'
pd.read_csv(alread_url, squeeze=True, error_bad_lines=False)

b'Skipping line 6: expected 1 fields, saw 2\nSkipping line 7: expected 1 fields
\nSkipping line 25: expected 1 fields, saw 2\nSkipping line 42: expected 1 fields, saw 
2\nSkipping line 43: expected 1 fields, saw 2... some more similar errors

我把它作为数据帧得到

<!DOCTYPE html>
0   <html lang="en">
1   <head>
2   <meta charset="utf-8">
3   <meta name="google-site-verification" conten...
4   <title>Meet Google Drive – One place for all...
... ...
1647    <script type="text/javascript" nonce="3QmHtC...
1648    'https:\x2F\x2Faccounts.google.com\x2FPassiv...
1649    </script>
1650    </body>

1651    </html>
1652 rows × 1 columns

要说的另一件事是,我在 google colab notebook 中运行了这个...... 主要目标是从谷歌驱动器读取 csv 和 xlsx 文件,而无需在任何地方下载文件,所以,如果你知道该怎么做,我真的不在乎我是否不能解决这个问题。

编辑:这是 pandas 试图读取为 csv 的原始文本:

\n&lt;!DOCTYPE html&gt;\n&lt;html lang="en"&gt;\n &lt;head&gt;\n &lt;meta charset="utf-8"&gt;\n &lt;meta content="width=300, initial-scale=1" name="viewport"&gt;\n &lt;meta name="description" content="Google Drive is a free way to keep your files backed up and easy to reach from any phone, tablet, or computer. Start with 15GB of Google storage – free."&gt;\n &lt;meta name="google-site-verification" content="LrdTUW9psUAMbh4Ia074-BPEVmcpBxF6Gwf0MSgQXZs"&gt;\n &lt;title&gt;Meet Google Drive – One place for all your files&lt;/title&gt;\n &lt;style&gt;\n @font-face {\n font-family: \'Open Sans\';\n font-style: normal;\n font-weight: 300;\n src: url(//fonts.gstatic.com/s/opensans/v15/mem5YaGs126MiZpBA-UN_r8OUuhs.ttf) format(\'truetype\');\n}\n@font-face {\n font-family: \'Open Sans\';\n font-style: normal;\n font-weight: 400;\n src: url(//fonts.gstatic.com/s/opensans/v15/mem8YaGs126MiZpBA-UFVZ0e.ttf) format(\'truetype\');\n}\n &lt;/style&gt;\n &lt;style&gt;\n h1, h2 {\n -webkit-animation-duration: 0.1s;\n -webkit-animation-name: fontfix;\n

【问题讨论】:

  • Google 云端硬盘正在向您的 csv 文件添加一些元数据。看看这个答案是否有帮助 - how to read csv from google drive.
  • 是的...已经尝试了所有这些答案,我得到了相同的结果...网址似乎指向另一个文件

标签: python pandas


【解决方案1】:

我遇到了类似的问题,只是摸不着头脑。 只需转到您在谷歌驱动器上的共享选项卡并选择共享(链接)并确保您不仅可以访问某个组织,还可以通过链接访问每个人。这对我有帮助。

附:上述解决方案适用于从任何平台(本地或在线)上的谷歌驱动器读取数据。

导入代码:

url='url-link'
file_id=url.split('/')[-2]
dwn_url='https://drive.google.com/uc?id=' + file_id
data = pd.read_csv(dwn_url,error_bad_lines=False)

【讨论】:

    【解决方案2】:

    简短回答 - 您不能将 Google 云端硬盘 URL 设置为 pd.read_csv()。您必须下载 CSV 文件并使用它的实际路径。

    基本上,Google 云端硬盘 URL 会显示有一些 CSV 文件。实际上,它只是一个网站(包含 HTML 内容),向您显示有关他们托管的 CSV 文件的一些信息。这就是你看到的:&lt;!DOCTYPE html&gt;...

    在本地,这是可行的,因为您使用 Pandas 可以读取的实际文件系统路径。如果要对远程文件执行此操作,则必须获取该文件,以便它在本地文件系统中可用。一般来说,您可以使用wgetcurl 命令,但使用Google Drive 并不简单,因为您需要通过Google 帐户进行身份验证才能访问该文件。关于如何做到这一点有一些想法herehere

    在 Python / Jupyter notebook 中下载文件的最佳方式是使用gdown。您可以通过 pip 安装它并提供您的 URL,它会为您下载。

    # install gdown in terminal
    pip install gdown
    
    # download your file
    gdown 'https://drive.google.com/uc?id=1iE1nHPJvglklttBEqX92_Mfg6421CtMq'
    

    注意我们提供给 gdown 的 URL。

    import pandas as pd
    pd.read_csv('/path/to/file.csv')
    

    我在 Deepnote 中为您创建了 an example notebook,您可以在本地 Python repl、VSCode、Jupyter notebook 或 Google Colab 中执行相同操作。

    您可以通过安装 Drive 来从 Colab 连接到 Drive。更多关于 here.

    【讨论】:

    • 不错!非常感谢...我是用 Pydrive 做的... gdown 看起来更容易..
    猜你喜欢
    • 2021-01-04
    • 2020-08-12
    • 2016-03-11
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 2019-10-21
    相关资源
    最近更新 更多