从 python 中的 URL 中读取 xls 文件

Read xls file from a URL in python

我正在尝试从 python 下面的 link 中读取数据 https://drive.google.com/file/d/16cp23cJxeyUfnBHMp-sNCuFNQxe8cqOV/view

我试过这个:

import pandas as pd

path = pd.read_excel('https://drive.google.com/file/d/16cp23cJxeyUfnBHMp-sNCuFNQxe8cqOV/view')

返回此错误:

XLRDError:不支持的格式,或损坏的文件:预期的 BOF 记录;找到 b'

然后我尝试使用cvs格式

path = pd.read_csv('https://drive.google.com/file/d/16cp23cJxeyUfnBHMp-sNCuFNQxe8cqOV/view')

返回了这个

ParserError:标记数据时出错。 C 错误:第 133 行应有 298 个字段,但看到了 440

最后我试了这个:

path = pd.read_csv("https://drive.google.com/file/d/16cp23cJxeyUfnBHMp-sNCuFNQxe8cqOV/view")

这读取了数据,但这不是我在看到 link(283 行,7 列)后所期望的。下面的照片。

Error reading data

关于如何读取数据的任何想法?

谢谢

使用此示例从 Google 驱动器下载 excel(fileid 是 URL 中 /d/ 部分之后的 ID):

fileid = "16cp23cJxeyUfnBHMp-sNCuFNQxe8cqOV"

df = pd.read_excel(
    "https://drive.google.com/uc?export=download&id={fileid}".format(
        fileid=fileid
    ),
    skiprows=17,
)
print(df)

打印:

     Unnamed: 0                                         Unnamed: 1                                         Unnamed: 2 Petajoules Gigajoules           %
0           NaN                                        Afghanistan                                        Afghanistan        321         10   78.669280
1           NaN                                            Albania                                            Albania        102         35  100.000000
2           NaN                                            Algeria                                            Algeria       1959         51    0.551010
3           NaN                                     American Samoa                                     American Samoa        ...        ...    0.641026
4           NaN                                            Andorra                                            Andorra          9        121   88.695650
5           NaN                                             Angola                                             Angola        642         27   70.909090

...and so on.