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

如何基于复杂规则对Python Pandas DataFrame做数据路由与扩展?

实现Pandas DataFrame的路由映射逻辑(默认规则+值覆盖)

核心逻辑梳理

  • 待处理DataFrame中From/To列有值时,直接通过From_Names/To_Names映射表获取对应名称,覆盖默认规则
  • 当From/To列为空时,使用默认路由规则填充对应的编码,再关联映射表获取名称

示例数据定义

先模拟符合场景的测试数据(可根据实际结构调整):

import pandas as pd

# 默认路由规则表:按Category匹配默认From/To编码
default_routes = pd.DataFrame({
    "Category": ["A", "B", "C"],
    "Default_From": ["F01", "F02", "F03"],
    "Default_To": ["T01", "T02", "T03"]
})

# From编码-名称映射表
from_names = pd.DataFrame({
    "From": ["F01", "F02", "F04", "F05"],
    "From_Name": ["总部", "分部1", "临时点1", "临时点2"]
})

# To编码-名称映射表
to_names = pd.DataFrame({
    "To": ["T01", "T02", "T04", "T05"],
    "To_Name": ["仓库1", "仓库2", "临时仓1", "临时仓2"]
})

# 待处理原始数据
raw_data = pd.DataFrame({
    "Category": ["A", "B", "C", "A", "B"],
    "From": [None, "F04", None, "F05", None],
    "To": ["T04", None, None, None, "T05"]
})

实现代码

步骤1:填充默认路由编码

先关联默认规则表,用默认值填补空的From/To字段:

# 关联默认路由规则
raw_data_with_default = raw_data.merge(default_routes, on="Category", how="left")

# 仅为空的From/To填充默认值
raw_data_with_default["From"] = raw_data_with_default["From"].fillna(raw_data_with_default["Default_From"])
raw_data_with_default["To"] = raw_data_with_default["To"].fillna(raw_data_with_default["Default_To"])

步骤2:关联名称映射表

通过左连接获取对应的From_Name和To_Name:

# 关联From名称
result = raw_data_with_default.merge(from_names, on="From", how="left")
# 关联To名称
result = result.merge(to_names, on="To", how="left")

步骤3:整理输出结果

保留需要的字段,若存在无映射的编码,可将名称字段填充为原编码:

# 选择目标列
final_result = result[["Category", "From", "To", "From_Name", "To_Name"]]

# 可选:将无映射的名称字段替换为原编码
final_result["From_Name"] = final_result["From_Name"].fillna(final_result["From"])
final_result["To_Name"] = final_result["To_Name"].fillna(final_result["To"])

print(final_result)

运行结果

Category  From    To From_Name To_Name
0        A  F01  T04        总部    临时仓1
1        B  F04  T02      临时点1      仓库2
2        C  F03  T03        F03      T03
3        A  F05  T01      临时点2      仓库1
4        B  F02  T05        分部1    临时仓2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:05:30