将Pandas Dataframe 导出为CSV

nc1teljy  于 2022-12-15  发布在  其他
关注(0)|答案(2)|浏览(207)

这是一个关于如何允许用户在Python 3中将Pandas Dataframe 导出为CSV格式的问题。
对于上下文,我有一个Django view,它接受来自jQuery的POST请求,这样当用户点击我网站上的按钮时,它会触发一个对Django view的POST请求,并执行一些过滤来生成一个Pandas Dataframe 。我希望用户能够导出 Dataframe * 在他们的端 *,而不是到我个人的本地机器/项目目录。
我对“下载”和“导出”做了明确的区分。下载可以通过pd.to_csv方法轻松完成,基本上将CSV文件保存到 * 我的本地机器 * 内的指定目录中(或者实际上是我的项目文件夹)。问题是我想要的行为是“导出”,我将其定义为当用户,在单击按钮时,能够获取 * 其 * 本地计算机上的 Dataframe 。
我目前“导出”的方法是将Dataframe转换为HTML table元素,将HTML作为POST请求的响应返回给jQuery,并使用vanilla JS检查table元素,以便在用户端导出数据,遵循类似于How do I export html table data as .csv file?的协议。检查相关联的table元素以生成CSV文件变得不可能。
任何关于将Pandas Dataframe 导出为CSV的建议都是值得赞赏的--事实上,这可能是一个原创的解决方案。

gpnt7bae

gpnt7bae1#

df.to_csv(directory/file_name.csv')
ttcibm8c

ttcibm8c2#

在你的视图函数中试试这个

import csv
import pandas as pd

def get(request):
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="{filename}.csv"'.format(filename='myname')
    writer = csv.writer(response)
    df = pd.DataFrame([{"name": "haha", "age": 18}, {"name": "haha", "age": 18}])
    writer.writerow([column for column in df.columns])
    writer.writerows(df.values.tolist())
    return response

相关问题