bk_*_*bk_ 4 python excel dataframe pandas python-requests
我正在将 Excel 文件作为 DataFrame 加载,进行一些转换,然后我想将 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 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'})
Run Code Online (Sandbox Code Playgroud)
即我将转换后的 DataFrame 保存在本地,然后将本地副本上传到服务器。是否可以将 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'}),
Run Code Online (Sandbox Code Playgroud)
这会导致TypeError: '_XlsxWriter' object is not iterable.
如何将 pandas DataFrame 转换为 Excel 文件并将其传递给request.put?
小智 9
您只需要返回字节值而不是编写者本身。
并且您不需要实际的文件来写入它,您可以只使用 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'}),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5297 次 |
| 最近记录: |