Python 如何在不保存数据帧的情况下将其转换为xlsx文件?
编辑2: 我将Excel文件作为数据框加载,进行一些转换,然后我想将Excel文件保存到某个服务器(而不是本地) 目前,我可以采取变通办法来实现这一点:Python 如何在不保存数据帧的情况下将其转换为xlsx文件?,python,excel,pandas,dataframe,python-requests,Python,Excel,Pandas,Dataframe,Python Requests,编辑2: 我将Excel文件作为数据框加载,进行一些转换,然后我想将Excel文件保存到某个服务器(而不是本地) 目前,我可以采取变通办法来实现这一点: import pandas as pd import requests df = pd.read_excel("file.xlsx") df = do_some_transformation(df) # Store DataFrame locally df.to_excel("outputfile.xlsx") # re-read loc
import pandas as pd
import requests
df = pd.read_excel("file.xlsx")
df = do_some_transformation(df)
# Store DataFrame locally
df.to_excel("outputfile.xlsx")
# re-read locally stored file und upload it
with open("outputfile.xlsx", "rb") as fin:
requests.put("url/outputfile.xlsx",
data=fin.read(),
auth=auth,
headers={'content-type': 'application/vnd.ms-excel'})
i、 e.我在本地保存转换后的数据帧,然后将本地副本上载到服务器。是否可以直接将df转换为excel文件,而不必在本地存储和重新加载?
如何修改requests.put语句
带着@Aryerez的暗示,我试着
df = pd.read_excel("file.xlsx")
df = do_some_transformation(df)
writer = pd.ExcelWriter("file.xlsx", engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
requests.put("url/outputfile.xlsx",
data=writer,
auth=auth,
headers={'content-type': 'application/vnd.ms-excel'}),
这会导致类型错误:“\u XlsxWriter”对象不可编辑
如何将pandas数据框转换为Excel文件并将其传递给请求。放置??您可以执行以下操作:
writer = pd.ExcelWriter(fileName, engine='xlsxwriter')
df.to_excel(writer, sheetName)
这将在writer
中创建一个Excel对象,其中包含df
中的数据。在您执行以下操作之前,它不会保存它:
writer.save()
- 您只需要返回bytes值,而不是writer本身
- 您不需要实际的文件来写入,只需使用io.BytesIO()即可,而无需将其保存到磁盘
output = io.BytesIO() df = pd.read_excel("file.xlsx") df = do_some_transformation(df) writer = pd.ExcelWriter(output, engine='xlsxwriter') df.to_excel(writer, sheet_name='Sheet1') writer.save() xlsx_data = output.getvalue() requests.put("url/outputfile.xlsx", data=xlsx_data, auth=auth, headers={'content-type': 'application/vnd.ms-excel'}),
writer
是excel对象,而不是df
,后者仍然是pandas数据框
。其次,按原样发送时会出现错误,因为您编写的函数write_to_server
接收到带有文件名的string
参数,writer
是excel对象,而不是带有文件名的string
。由于您没有在此处发布函数,我们无法查看它,因此请尝试查看是否可以将其输入修改为excel对象而不是文件名。