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

如何将DataFrame列值映射为指定List对应索引位置的元素

Pandas 用列表做列映射的实现方法

以下两种方案都可以实现需求:

方案1:使用map()方法(推荐,兼容性更好)

核心思路是先将列表转换为「下标-元素」对应的映射字典,再调用pandas原生的map方法完成匹配:

  • 用enumerate()遍历列表生成下标和值的对应关系,直接转为字典
  • 对Col1列调用map()方法传入生成的字典即可完成映射

示例代码:

import pandas as pd

# 示例原始数据
df1 = pd.DataFrame({'Col1': [3,5,6,7,9]})
Mapping_list = ["Sales","Pre-Sales","Marketing", "Digital-Banking", "Payments", "telecom", "Core-Banking","Infra", "Cards", "Commercial-Banking" ]

# 生成映射字典
map_dict = dict(enumerate(Mapping_list))
# 映射结果存入新列Col2,如需替换原列可将左侧改为df1['Col1']
df1['Col2'] = df1['Col1'].map(map_dict)

该方案优势:如果Col1中存在超出列表下标的异常值,会自动返回NaN而不会报错,适合脏数据场景。

方案2:使用apply()直接索引列表

如果确认Col1的所有取值都在列表的下标范围内,可以用更简洁的写法:

df1['Col2'] = df1['Col1'].apply(lambda x: Mapping_list[x])

该方案优势是写法简单,缺点是遇到超出下标的值会直接抛出IndexError。

两种方案运行后的结果都完全符合预期对应关系:3对应Digital-Banking、5对应telecom、6对应Core-Banking、7对应Infra、9对应Commercial-Banking。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:30:01