如何在Python中结合pandas通过Streamlit下拉列表重命名CSV列?
使用Streamlit + Pandas实现CSV列重命名功能
整个实现逻辑和你在JS中用映射更新对象的思路完全一致,核心是先构造「原列名:新列名」的映射关系,再调用pandas的rename方法执行批量修改,对接Streamlit的交互组件就能快速做成可视化工具。
完整可运行代码
import streamlit as st import pandas as pd from io import StringIO st.title("CSV列重命名工具") # 上传CSV文件 uploaded_file = st.file_uploader("上传CSV文件", type="csv") if uploaded_file is not None: # 读取原始数据 df = pd.read_csv(uploaded_file) st.subheader("原始数据预览") st.dataframe(df.head(3)) # 生成列名配置区,收集新老列名映射 st.subheader("设置新列名") col_map = {} for old_col in df.columns: # 每个原列名对应一个可编辑输入框,默认值为原列名 new_col = st.text_input(f"原列名:{old_col}", value=old_col) col_map[old_col] = new_col # 执行重命名逻辑 if st.button("确认修改列名"): # 核心方法,和你给出的参考代码逻辑完全一致 df.rename(columns=col_map, inplace=True) st.success("列名修改完成") # 展示修改后效果 st.subheader("修改后数据预览") st.dataframe(df.head(3)) # 提供下载入口 output = StringIO() df.to_csv(output, index=False) st.download_button( label="下载修改后的CSV", data=output.getvalue(), file_name="已修改列名.csv", mime="text/csv" )
关键说明
- 你熟悉的JS中的映射对象,在Python中对应字典结构,上面代码里的
col_map和JS里的映射对象作用完全相同 df.rename()的inplace=True参数表示直接修改原DataFrame,如果需要保留原始数据,可以去掉这个参数,把返回值赋值给新变量即可:new_df = df.rename(columns=col_map)- 如果需要做校验,比如禁止重名列、禁止特殊字符,可以在收集完
col_map的值之后加判断逻辑,不符合要求时给用户提示即可
内容的提问来源于stack exchange,提问作者app rapido
相关产品推荐
相关产品推荐

