如何使用Pandas将DataFrame列指定值转换为对应缩写?
当然可以!完全不用依赖scikit-learn,用Pandas自己的工具就能轻松搞定这个值映射需求,而且方法还挺灵活的,我给你介绍几种常用的实现方式:
方法1:使用
map()函数(最推荐) 这是处理这种一对一值映射最直观的方式,先定义一个映射字典,然后用map()把原列的每个值对应到缩写:
import pandas as pd # 构造示例DataFrame(模拟你的数据) data = {'rating': ['excellent', 'good', 'average', 'bad', 'very bad', 'good', 'excellent']} df = pd.DataFrame(data) # 定义映射规则字典 rating_mapping = { 'excellent': 'EX', 'good': 'G', 'average': 'Avg', 'bad': 'B', 'very bad': 'VB' } # 新增缩写列 df['rating_abbr'] = df['rating'].map(rating_mapping) print(df)
运行后会得到如下结果:
rating rating_abbr 0 excellent EX 1 good G 2 average Avg 3 bad B 4 very bad VB 5 good G 6 excellent EX
方法2:使用
replace()函数 如果需要更灵活的替换场景(比如后续要扩展正则替换等),replace()也能实现同样的效果,用法和map()几乎一致:
df['rating_abbr'] = df['rating'].replace(rating_mapping)
这个写法的效果和map()完全相同,区别在于replace()支持更多高级替换逻辑,而map()更专注于简单的字典映射。
处理未匹配的异常值
如果你的DataFrame里可能存在不在映射字典中的值,map()会把这些值转为NaN,这时候可以用fillna()来填充默认值,避免出现缺失值:
# 把未匹配到的值统一替换为"Unknown" df['rating_abbr'] = df['rating'].map(rating_mapping).fillna('Unknown')
内容的提问来源于stack exchange,提问作者mihir shanvir
相关产品推荐
相关产品推荐

