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

Pandas如何实现DataFrame数值列与同行动态字典映射生成新列

问题原因分析
  • 第一种写法错误:df.data.map(df.Dict)中的map方法会将传入的df.Dict(Series类型)作为全局映射表,用data列的值匹配df.Dict的索引,而非匹配每行对应的字典,因此结果不符合预期。
  • 第二种写法错误:df.data.apply(lambda rows: rows.map(rows.Dict))是对data单列执行apply,lambda接收的rows实际是data列的单个整数数值,本身没有map方法和Dict属性,因此触发属性报错。
正确实现方案

方案1:按行遍历实现(逻辑直观,适合小数据量)

通过设置axis=1对DataFrame整行执行遍历,直接取当前行的data作为key,匹配同行字典的对应值后取出列表内的字符串:

df['result'] = df.apply(lambda row: row['Dict'][row['data']][0], axis=1)

方案2:列表推导式实现(性能更优,适合大数据量)

用zip同时遍历Dict和data两列,直接推导生成结果列,运行效率远高于行遍历:

df['result'] = [dict_val[data_key][0] for dict_val, data_key in zip(df['Dict'], df['data'])]

两种方案运行后均可得到你预期的result列结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:48:00