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

如何为Llama-Index Pandas Query Engine配置多个DataFrame?遇报错求助

解决方案
  • 错误原因解析
    触发ValueError的核心原因是Pandas Query Engine的默认模块(如SQL生成模块)在未指定dest_key时,仅允许单个输入键。你添加多个DataFrame字符串键(df1_str、df2_str等)后,违反了这一限制规则。

  • 合并多DataFrame元信息为单一输入键
    将所有DataFrame的结构信息(列名、数据类型、样本数据等)合并成一个统一的字符串,作为PromptTemplate的单个输入键(例如命名为dfs_meta_str),避免多键冲突。示例代码:

    from llama_index.core import PromptTemplate
    
    # 生成单个DataFrame的元信息字符串
    def generate_df_meta(df, df_name):
        meta_content = f"DataFrame {df_name}:\n"
        meta_content += f"列名与数据类型:\n{df.dtypes.to_string()}\n"
        meta_content += f"前3行样本数据:\n{df.head(3).to_string()}\n\n"
        return meta_content
    
    # 合并所有DataFrame的元信息
    combined_dfs_meta = generate_df_meta(df1, "df1") + generate_df_meta(df2, "df2") + generate_df_meta(df3, "df3")
    
    # 定义自定义PromptTemplate,使用单一输入键
    custom_prompt = PromptTemplate(
        """
        给定以下多个DataFrame的元信息:
        {dfs_meta_str}
        用户查询:{query_str}
        请生成对应的Pandas代码回答查询,需正确处理多DataFrame的关联逻辑(如merge、join)。
        """
    )
    
  • 配置Query Engine并传入合并后的元信息
    初始化PandasQueryEngine时绑定自定义Prompt,查询时传入合并后的元信息和用户查询内容。示例代码:

    from llama_index.core.query_engine import PandasQueryEngine
    
    # 初始化Query Engine,这里传入任意一个DataFrame即可,实际逻辑由Prompt中的元信息驱动
    query_engine = PandasQueryEngine(
        df=df1,
        prompt=custom_prompt,
        verbose=True
    )
    
    # 执行查询
    query_response = query_engine.query(
        query_str="你的具体查询内容",
        dfs_meta_str=combined_dfs_meta
    )
    
  • 验证与优化
    测试查询时,检查LLM生成的代码是否正确引用多个DataFrame;若生成逻辑有误,可在Prompt中添加约束,比如要求明确写出DataFrame名称、指定关联键规则等。

内容的提问来源于stack exchange,提问作者Mir Jibraan Hussain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:03:23