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

如何不用lambda函数将DataFrame列作为字典键生成新列?

不用Lambda函数实现字典映射生成新列

当然可以不用lambda函数,用pandas自带的方法就能轻松实现,下面是几种常用方案:

  • 方法1:使用Series.map()(推荐)
    map()方法本身就支持传入字典做键值映射,是处理这类需求最直接高效的方式:
import pandas as pd

# 示例数据集
df = pd.DataFrame({'A': ['New York', 'California', 'Florida', 'Texas']})
my_dict = {"New York":1, "California":2, "Florida":3}

# 生成列B,未匹配的项会显示NaN
df['B'] = df['A'].map(my_dict)

# 如果需要给未匹配项设置默认值,比如0,可结合fillna()
df['B'] = df['A'].map(my_dict).fillna(0)
  • 方法2:使用Series.replace()
    replace()同样支持字典映射,和map()的区别是,未匹配的项会保留原列的值。如果需要统一处理未匹配项,可以用mask()来替换:
import pandas as pd

df = pd.DataFrame({'A': ['New York', 'California', 'Florida', 'Texas']})
my_dict = {"New York":1, "California":2, "Florida":3}

# 生成列B,未匹配项保留原城市名
df['B'] = df['A'].replace(my_dict)

# 将未匹配项替换为默认值(比如0)
df['B'] = df['B'].mask(~df['B'].isin(my_dict.values()), 0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:03:15