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

如何利用DataFrame变量信息通过Gradio下拉框实现数据输入?

问题原因与修复方案

核心问题点

  • 代码使用了Gradio旧版API(gr.inputs.Dropdown和["text"]输出定义),新版Gradio 3.x已弃用这些写法,兼容性问题导致提交挂起。
  • 函数返回的字典类型与输出组件不匹配,Gradio无法正确解析返回值,引发阻塞。

修复后的完整代码

import gradio as gr
import pandas as pd
import json

# 替换为你的CSV文件路径
file_path = "your_data.csv"

df = pd.read_csv(file_path)
variables = list(df.columns)
df = df.dropna()
options = {var: list(df[var]) for var in variables}

save_variables = {}

def assign_values(**kwargs):
    global save_variables
    save_variables.update(kwargs)
    # 将字典格式化为可读字符串返回
    return json.dumps(kwargs, indent=2, ensure_ascii=False)

# 使用新版Gradio组件定义输入
inputs = [gr.Dropdown(label=var, choices=options[var]) for var in variables]
# 明确指定输出组件为文本框
outputs = gr.Textbox(label="已选中的值", lines=10)

gr.Interface(fn=assign_values, inputs=inputs, outputs=outputs, title="Assign Values").launch()

关键修改说明

  1. 替换旧版输入组件:
    把gr.inputs.Dropdown改为gr.Dropdown,新版Gradio已移除gr.inputs模块,直接使用顶级组件类。

  2. 规范输出组件定义:
    用gr.Textbox实例替代["text"]字符串,明确输出类型和显示配置(比如设置lines让结果更易读)。

  3. 调整返回值格式:
    用json.dumps把kwargs字典转换成格式化字符串,确保输出组件能正确接收并显示内容,避免类型不匹配导致的挂起。

额外优化建议

  • 如果不需要全局保存选中值,可以删除global save_variables和save_variables.update(kwargs)这两行代码,简化逻辑。
  • 若CSV中存在重复选项,可以对options[var]去重,比如list(set(df[var])),避免下拉框出现重复项。

内容的提问来源于stack exchange,提问作者Maracman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:25:19