今天分享一个pandas数据导出到excel的小小经验。默认你已经学会了怎么初始化数据到pandas中。这里只分享导出。

导出到文件中

# file_path 需要保存的文件路径
# table pandas DataFrame对象


writer = pd.ExcelWriter(file_path)  # 初始化一个writer
table.to_excel(writer, float_format='%.5f')  # table输出为excel, 传入writer
writer.save()  # 保存

注意的点:

①pandas行号默认从0开始,可以通过下列语句解决

table.index += 1

②如果不需要行号,可以通过下列语句解决

df.to_excel(writer, index=False)

③如果需要导出给用户,通常需要修改列名,可以通过下列语句解决

columns_mapp = { "source_column": "target_column" }  # 字典,键为原始列名,值为目标列名

new_table = table.rename(columns=columns_mapp)  # 不修改原始table,返回新的数据帧
table.rename(columns=columns_mapp, inplace=True)  # 直接修改原table

④如果需要返回到前端,不需要落盘(谨慎内存使用),可以直接保存到IO

# 准备写入到IO中
# name excel文件名

output = BytesIO()   # 创建一个IO流对象
writer = pd.ExcelWriter(output)  #  初始化一个writer,传入这个IO对象
table.to_excel(writer, name, encoding='utf-8')  # table输出到writer中
output.seek(0)  # 重新定位到开始
writer.save()  # 将Excel文件内容保存到IO中

# 返回前端
response = HttpResponse(content_type='text/csv')
response.write(codecs.BOM_UTF8)
file_name = urlquote(file_name)  # 使用urlquote()方法解决中文无法使用的问题
response.content = output.getvalue()  # 直接从IO中获取数据
response['Content-Disposition'] = 'attachment; filename=%s' % file_name

return response

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐