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

如何使用pandas的.map()方法为DataFrame创建新列

pandas.map()新增列实现方案

map()是针对Series的元素级映射方法,你可以根据需求选择以下两种常用方式实现新增列:

方式1:传入字典做值映射

适合枚举类的字段转换需求,比如对示例中的Job职业字段做职级映射,新增job_level列:

import pandas as pd

# 你提供的示例数据
data = {
    'age':[30,33,35,30,59],
    'Job':['unemployed','services','management','management','blue-collar'],
    'marital':["married","married","single","married","married"],
    'Default':['no','no','no','no','no'],
    'Balance':[1787,4989,1350,1476,0],
    'Housing':['no','yes','no','yes','no'],
    'Loan':['no','yes','no','yes','no'], 'Day':[19,11,16,3,5]
}
df = pd.DataFrame(data)

# 1. 定义映射字典
job_map = {
    'unemployed': 0,
    'blue-collar': 1,
    'services': 2,
    'management': 3
}
# 2. 调用map执行映射,赋值给新列
df['job_level'] = df['Job'].map(job_map)

如果需要给未匹配到的内容设置默认值,可以追加fillna():

df['job_level'] = df['Job'].map(job_map).fillna(-1)

方式2:传入自定义函数做逻辑判断

适合需要多条件判断的转换需求,比如对示例中的Balance账户余额做等级划分,新增balance_rank列:

# 1. 自定义映射逻辑函数
def get_rank(balance):
    if balance > 2000:
        return "高"
    elif 1000 <= balance <= 2000:
        return "中"
    else:
        return "低"

# 2. 调用map执行映射,赋值给新列
df['balance_rank'] = df['Balance'].map(get_rank)

注意事项

  • map()只能作用在单列(Series对象)上,不能直接对整个DataFrame调用
  • 如果需要多列关联计算生成新列,建议使用apply()方法替代

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:09:02