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

如何将多份Pandas DataFrame输入大语言模型生成合并摘要?

解决多异结构DataFrame合并摘要生成及Token超限问题

1. 提取单DataFrame核心信息(避免全量数据传入)

不要直接传入完整DataFrame,而是针对每个表格提取Schema详情、关键统计、少量样本这三类核心信息,大幅压缩Token占用:

import pandas as pd

def extract_df_key_info(df, df_name):
    # 1. Schema基础信息
    schema_table = pd.DataFrame({
        '列名': df.columns,
        '数据类型': df.dtypes.astype(str),
        '非空占比(%)': round(df.notna().mean() * 100, 2),
        '唯一值数量': df.nunique()
    }).to_markdown(index=False)
    
    # 2. 列级统计概览
    stats_summary = []
    for col in df.columns:
        if pd.api.types.is_numeric_dtype(df[col]):
            stats = f"- {col}: 均值{round(df[col].mean(),2)}, 中位数{df[col].median()}, 极值[{df[col].min()}, {df[col].max()}]"
        else:
            top_vals = df[col].value_counts().head(2).to_dict()
            stats = f"- {col}: Top2高频值 {top_vals}"
        stats_summary.append(stats)
    stats_text = "\n".join(stats_summary)
    
    # 3. 代表性样本(最多3条)
    sample_rows = df.sample(min(3, len(df))).to_dict('records')
    sample_text = "\n".join([f"- {row}" for row in sample_rows])
    
    return f"""### 表格:{df_name}
**Schema详情**:\n{schema_table}

**统计概览**:
{stats_text}

**样本数据**:
{sample_text}\n"""

# 示例调用
df_sales = pd.DataFrame({'id': [1,2,3], 'sales': [100,200,300], 'category': ['A','B','A']})
df_users = pd.DataFrame({'user_id': [101,102], 'signup_date': pd.date_range('2023-01-01', periods=2), 'is_active': [True, False]})

all_table_info = [
    extract_df_key_info(df_sales, '销售数据'),
    extract_df_key_info(df_users, '用户数据')
]
combined_info = "\n".join(all_table_info)

2. 结构化传入大模型生成合并摘要

将上述生成的精简信息传入模型,用明确指令引导输出:

from openai import OpenAI

client = OpenAI()
response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "user", "content": f"请基于以下多个表格的核心信息,生成一份合并摘要,涵盖所有表格的核心内容、数据特征,以及潜在的关联点:\n\n{combined_info}"}
    ]
)
print(response.choices[0].message.content)

3. 剩余Token压力的应对方案

如果合并后的信息仍接近模型上下文上限:

  • 分批生成子摘要:先将表格分组,生成每组的子摘要,再将子摘要合并生成最终总摘要
  • 切换大上下文模型:选用GPT-4 Turbo(128k上下文)、Claude 3 Sonnet(200k上下文)等支持更大输入的模型
  • 进一步精简信息:移除非必要统计项(比如仅保留数值列的中位数和极值,省略均值;分类列只保留Top1高频值)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:25:21