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

如何优化基于字典键值映射的DataFrame新标签列创建方法?

高效映射解决方案

步骤1:反转原字典,构建值到键的扁平映射表

原字典是「键对应多值」的结构,我们先把它转换成「单个值对应键」的一对一映射字典,后续就能直接用pandas的矢量化方法快速匹配:

d = {1: [0.01, 0.02], 2:[1, 2], 3:[10, 20]}
# 嵌套推导式直接生成{值: 对应键}的映射
reverse_map = {val: key for key, vals in d.items() for val in vals}

执行后reverse_map会变成{0.01:1, 0.02:1, 1:2, 2:2, 10:3, 20:3},完全匹配我们的映射需求。

步骤2:用pandas矢量化方法生成目标列

直接调用df['x'].map()方法,这是pandas底层优化的矢量化操作,比循环暴力匹配快几个数量级:

import pandas as pd

df = pd.DataFrame({'x': [0.01, 0.02, 1, 2, 10, 20]})
df['x_label'] = df['x'].map(reverse_map)

运行后df['x_label']就会得到预期的[1, 1, 2, 2, 3, 3]。

特殊情况处理(浮点数精度问题)

如果数据里的浮点数存在精度误差(比如0.01存成了0.010000000001),可以先统一精度再映射:

# 统一保留两位小数,避免精度偏差
reverse_map = {round(val, 2): key for key, vals in d.items() for val in vals}
df['x_label'] = df['x'].round(2).map(reverse_map)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 16:30:43