使用create_pandas_dataframe_agent处理多DataFrames报错求助
问题解决办法
1. 修正参数类型标注
你的函数参数files标注为UploadedFile,但Streamlit上传多个文件时返回的是UploadedFile列表,类型标注错误会导致潜在逻辑问题,应改为List[UploadedFile]:
from typing import List from streamlit import UploadedFile import pandas as pd from langchain.agents import create_pandas_dataframe_agent from langchain.llms import OpenAI def csv_tool(files: List[UploadedFile]): my_array = [] for f in files: # 重置文件指针,避免重复读取时获取空数据 f.seek(0) my_array.append(pd.read_csv(f)) # 将DataFrame列表作为第二个参数传入 return create_pandas_dataframe_agent(OpenAI(temperature=0), my_array, verbose=True)
2. 确保上传组件支持多文件
调用csv_tool时,必须保证传入的是多文件列表,即Streamlit的file_uploader要开启multiple=True:
import streamlit as st uploaded_files = st.file_uploader("上传CSV文件", type="csv", multiple=True) if uploaded_files: agent = csv_tool(uploaded_files) # 执行agent查询逻辑 result = agent.run("你的查询语句") st.write(result)
3. 检查并升级LangChain版本
旧版本的create_pandas_dataframe_agent不支持传入DataFrame列表,需确保LangChain版本≥0.0.162。执行升级命令:
pip install --upgrade langchain
4. 排查其他可能问题
- 若仍报错,可在循环中打印
type(pd.read_csv(f)),确认my_array中的元素都是合法的pandas DataFrame - 每次读取UploadedFile前必须调用
f.seek(0)重置指针,避免因指针位置问题读取空数据
内容的提问来源于stack exchange,提问作者rusticbuckets
相关产品推荐
相关产品推荐

