使用PyDrive直接将Pandas DataFrame作为Excelfile upload到Google Drive

我正在尝试将一个pandas.DataFrame直接写入Google Drive,而不是先将文件写入本地。 我找不到解决办法,不确定是否有可能。 我试过下面的代码,但我得到一个AttributeError

 import pandas as pd from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive gauth = GoogleAuth() gauth.LoadCredentialsFile(mycreds) drive = GoogleDrive(gauth) df = pd.DataFrame({'a':[1,2],'b':[2,3]}) f = drive.CreateFile({'id': '0B_6_uVX9biFuX0FJWFkt'}) #test.xlsx file f.SetContentString(df) f.Upload() 

AttributeError:'DataFrame'对象没有属性'encode'

可以让pandas直接写一个Excel文件到像下面这样的string:

码:

 wb = Workbook() writer = pd.ExcelWriter('', engine='openpyxl') writer.book = wb df.to_excel(writer) file_as_string = save_virtual_workbook(wb) 

完整代码:

这里是上面的代码结合你的例子。 请注意,这部分未经testing。

 import pandas as pd from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive gauth = GoogleAuth() gauth.LoadCredentialsFile(mycreds) drive = GoogleDrive(gauth) df = pd.DataFrame({'a': [1, 2], 'b': [2, 3]}) from openpyxl.workbook import Workbook from openpyxl.writer.excel import save_virtual_workbook wb = Workbook() writer = pd.ExcelWriter('', engine='openpyxl') writer.book = wb df.to_excel(writer) f = drive.CreateFile({'id': '0B_6_uVX9biFuX0FJWFkt'}) #test.xlsx file f.SetContentString(save_virtual_workbook(wb)) f.Upload()