10

如何将 MS-excel(.xlsx) 文件从谷歌驱动器导入 colaboratory?

excel_file = drive.CreateFile({'id':'some id'})

确实有效(drive是一个pydrive.drive.GoogleDrive对象)。但,

print excel_file.FetchContent()

返回无。和

excel_file.content()

抛出:

() ----> 1 excel_file.content() 中的 TypeErrorTraceback (最近一次调用最后一次)

TypeError:“_io.BytesIO”对象不可调用

我的意图是(给定一些有效的文件 'id')将其作为 io 对象导入,它可以被 pandas 读取read_excel(),最后从中得到一个 pandas 数据框。

4

4 回答 4

10

您将要使用excel_file.GetContentFile将文件保存在本地。然后,你可以在你之后使用 Pandasread_excel方法!pip install -q xlrd

这是一个完整的例子: https ://colab.research.google.com/notebook#fileId=1SU176zTQvhflodEzuiacNrzxFQ6fWeWC

我更详细地做了什么:

我在要导出为 .xlsx 文件的工作表中创建了一个新电子表格。

接下来,我将其导出为 .xlsx 文件并再次上传到云端硬盘。网址是: https ://drive.google.com/open?id=1Sv4ib5i7CKWhAHZkKg-uitIkS3xwxtXM

记下文件 ID。就我而言,它是1Sv4ib5i7CKWhAHZkKg-uitIkS3xwxtXM.

然后,在 Colab 中,我调整了Drive 下载片段来下载文件。关键位是:

file_id = '1Sv4ib5i7CKWhAHZkKg-uitIkS3xwxtXM'
downloaded = drive.CreateFile({'id': file_id})
downloaded.GetContentFile('exported.xlsx')

最后,创建一个 Pandas DataFrame:

!pip install -q xlrd
import pandas as pd
df = pd.read_excel('exported.xlsx')
df

!pip install...行安装读取 Excel 文件所需的 xlrd 库。

于 2017-11-22T17:37:37.657 回答
6

也许更简单的方法:

#To read/write data from Google Drive:
#Reference: https://colab.research.google.com/notebooks/io.ipynb#scrollTo=u22w3BFiOveAå
from google.colab import drive
drive.mount('/content/drive')

df = pd.read_excel('/content/drive/My Drive/folder_name/file_name.xlsx')

# #When done, 
# drive.flush_and_unmount()
# print('All changes made in this colab session should now be visible in Drive.')

于 2020-08-09T19:41:21.000 回答
3

首先,我从google.colab导入iopandas文件

import io
import pandas as pd
from google.colab import files

然后我使用上传小部件上传文件

uploaded = files.upload()

您将看到与此类似的内容(单击选择文件并上传 xlsx 文件): 在此处输入图像描述

假设文件的名称是 my_spreadsheet.xlsx,因此您需要在以下行中使用它:

df = pd.read_excel(io.BytesIO(uploaded.get('my_spreadsheet.xlsx')))

就是这样,现在您在df数据框中有了第一张工作表。但是,如果您有多个工作表,则可以将代码更改为:

首先,将 io 调用移动到另一个变量

xlsx_file = io.BytesIO(uploaded.get('my_spreadsheet.xlsx'))

然后,使用新变量指定工作表名称,如下所示:

df_first_sheet = pd.read_excel(xlsx_file, 'My First Sheet')
df_second_sheet = pd.read_excel(xlsx_file, 'My Second Sheet')
于 2021-02-19T15:38:03.617 回答
0
import pandas as pd

xlsx_link = 'https://docs.google.com/spreadsheets/d/1Sv4ib5i7CKWhAHZkKg-uitIkS3xwxtXM/export'
df = pd.read_excel(xlsx_link)

如果 xlsx 托管在 Google 驱动器上,一旦共享,任何人都可以使用链接访问它,无论是否有谷歌帐户。google.colab.drive或者google.colab.files依赖不是必需的

于 2021-12-29T04:05:04.093 回答