如何将LangChain Pandas DataFrame Agent输出存入变量并实现数据映射?
跨DataFrame生成食物-类别映射表的实现方案
一、基础Pandas实现(替代DataFrame Agent)
1. 初始化示例DataFrame
import pandas as pd # 构建Table 1数据 df_food = pd.DataFrame({ "ID": [1, 2, 3], "Food items": ["Apple", "Celery", "Chicken"] }) # 构建Table 2数据 df_category = pd.DataFrame({ "ID": [1, 2, 3], "Categories": ["Vegetable", "Fruit", "Meat"] })
2. 关联生成映射表
通过ID字段关联两个表,提取需要的映射列:
# 按ID内连接两个表,确保只保留匹配的记录 merged_df = df_food.merge(df_category, on="ID", how="inner") # 生成最终映射表,调整列名更直观 mapping_df = merged_df[["Food items", "Categories"]].rename( columns={"Food items": "Food", "Categories": "Category"} )
注:如果示例中ID对应的类别需要调整(比如Apple对应Fruit),只需修正
df_category中的ID与类别对应关系后重新执行即可。
3. 输出为可回读格式
保存为Pandas可直接读取的Pickle格式
Pickle会完整保留DataFrame的结构和数据类型,适合后续Python直接调用:
# 保存映射表 mapping_df.to_pickle("food_category_mapping.pkl") # 回读示例 loaded_df = pd.read_pickle("food_category_mapping.pkl")
保存为通用JSON格式
JSON格式兼容性强,也可轻松转回DataFrame:
# 保存为格式化的JSON(records格式便于后续解析) mapping_df.to_json("food_category_mapping.json", orient="records", indent=2) # 回读示例 loaded_json_df = pd.read_json("food_category_mapping.json")
二、其他替代实现方案
1. 使用Pandas join方法(基于索引关联)
如果将ID设为两个表的索引,可使用join简化操作:
# 设置ID为索引 df_food.set_index("ID", inplace=True) df_category.set_index("ID", inplace=True) # 关联生成映射表 mapping_df = df_food.join(df_category)[["Food items", "Categories"]].rename( columns={"Food items": "Food", "Categories": "Category"} )
2. 手动构建映射字典(小数据量场景)
数据量较小时,可直接构建字典后转换为目标格式:
# 生成食物到ID的映射 food_to_id = df_food.set_index("Food items")["ID"].to_dict() # 生成ID到类别的映射 id_to_category = df_category.set_index("ID")["Categories"].to_dict() # 生成最终食物-类别字典 food_category_map = {food: id_to_category[food_to_id[food]] for food in food_to_id} # 转换为DataFrame mapping_df = pd.DataFrame(food_category_map.items(), columns=["Food", "Category"]) # 保存为JSON import json with open("food_category_mapping.json", "w") as f: json.dump(food_category_map, f, indent=2)
内容的提问来源于stack exchange,提问作者Teestaa Saha
相关产品推荐
相关产品推荐

