Pandas CSV 到 Django 响应

ifl*_*ly6 7 python django pandas

我有一个从数据库生成的 DataFrame。如何提供下载 CSV 的响应?

基本上,

df = magic_dataframe_supplier()
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename=export.csv'

# ... type mapping code ...

return response
Run Code Online (Sandbox Code Playgroud)

我有一个工作版本,csv.writer但出于明显的原因,那不是DataFrame. 而且我不清楚我究竟如何将 adf变成这样的对象。

ifl*_*ly6 11

鉴于:

df = magic_dataframe_supplier()
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename=export.csv'  # alter as needed
Run Code Online (Sandbox Code Playgroud)

写就好了:

df.to_csv(path_or_buf=response)  # with other applicable parameters
return response
Run Code Online (Sandbox Code Playgroud)

Pandas 将数据帧写入响应缓冲区中的 CSV,然后 Django 提供响应。

压缩。Pandas 不允许传递 non-nonecompression参数,因为它无法从不是路径的缓冲区确定压缩类型。相反,对于压缩,必须将文件写入文本包装器,然后使用 Python 的gzip库对其进行压缩。然后该对象将用作存档。与此类似的代码,适用于 Django,将是必要的。