You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:24:02