如何将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
相关产品推荐
相关产品推荐

