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

长格式pandas DataFrame基于嵌套字典查找重映射值的更优实现方法

方案1:简洁实现(适合中小数据集)

通过展开嵌套映射字典为单层元组Key的形式,结合map方法实现,代码非常简洁易读:

import pandas as pd

# 展开嵌套的映射字典为单层结构,key为(var, value)元组
single_map = {(var, val): label 
              for var, inner_map in value_map.items() 
              for val, label in inner_map.items()}

# 生成labelled列,未匹配到的项用原value填充
df["labelled"] = df[["var", "value"]].apply(tuple, axis=1).map(single_map).fillna(df["value"])

方案2:高性能矢量化实现(适合大数据集)

通过左连接实现映射,避免apply逐行操作的性能损耗,处理百万行以上数据时效率更高:

import pandas as pd

# 将映射字典转换为DataFrame用于关联
map_df = pd.DataFrame(
    [(var, val, label) 
     for var, inner_map in value_map.items() 
     for val, label in inner_map.items()],
    columns=["var", "value", "labelled"]
)

# 左连接原表与映射表,未匹配到的项用原value填充
df = df.merge(map_df, on=["var", "value"], how="left")
df["labelled"] = df["labelled"].fillna(df["value"])

两种实现的输出都和预期结果完全一致,均符合pandas的惯用语法,没有自定义循环逻辑,可读性和可维护性都更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:45:05