点击Streamlit按钮后如何保存Pandas DataFrame为CSV文件
Streamlit导出DataFrame到服务器端CSV报错解决方案
报错根因
你代码中触发报错的核心原因是:st.dataframe()返回的table是Streamlit的前端渲染对象,并非Pandas DataFrame实例,因此不具备to_csv方法。你自定义的generate_csv函数本身逻辑没有问题,报错同样是因为调用时传入了上述渲染对象,而非Pandas DataFrame。
正确实现代码
直接针对你要操作的Pandas DataFrame切片做导出即可,修改后的完整代码如下:
if len(data_frame) == 0: st.write("Please load file.") else: min = st.number_input('Od:', 0, len(data_frame), 0) max = st.number_input('Do:', 0, len(data_frame), len(data_frame) ) # 提前定义要渲染、导出的Pandas DataFrame切片 sliced_df = data_frame.iloc[min:max] dataset = st.container() # 渲染表格 st.dataframe(sliced_df) if st.button('Generate csv'): # 直接对Pandas实例调用to_csv存储到服务器 sliced_df.to_csv('table.csv', encoding='utf-8-sig', index=False) st.success("CSV文件已成功存储到服务器端")
可选配置说明
- 替换
to_csv的第一个参数为绝对路径即可自定义CSV存储位置,需要确保Streamlit运行进程对目标路径有写入权限 encoding='utf-8-sig'用于兼容Windows系统打开CSV不乱码,不需要可删除index=False用于避免导出CSV时额外增加Pandas默认行索引列,不需要可删除
内容的提问来源于stack exchange,提问作者martin
相关产品推荐
相关产品推荐

