如何在Pandas中基于另一列添加自定义值的新列
自定义类别到数值的映射方案
这事儿好办!要给你的g列添加自定义的数值映射,只需要两步:先定义好你的映射关系,再用Pandas的工具把它应用到列上就行,我结合你的例子详细说下:
步骤1:创建自定义映射字典
首先你需要把每个类别(比如你的A-J,实际工作中替换成你的名称)和对应的数值一一对应,写成字典的形式:
# 替换成你实际工作中的名称和对应值即可 category_mapping = { 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8, 'I': 9, 'J': 10 }
步骤2:用map()生成新列
接下来直接用Pandas的map()方法,把这个映射应用到g列上,就能生成你要的new列了:
df['new'] = df['g'].map(category_mapping)
效果展示
运行后你的DataFrame会变成这样(截取部分行):
x g new 0 64.038123 A 1 1 66.147050 B 2 2 66.370011 C 3 3 68.791019 D 4 4 70.583534 E 5 ... ... .. ... 499 74.461828 J 10
额外小技巧
- 如果你的需求更简单,也可以用
replace()方法,效果完全一致:df['new'] = df['g'].replace(category_mapping) - 要是
g列里存在不在映射字典中的值,map()会返回NaN,你可以用fillna()给这些值设置默认值:# 这里把未知类别设为0,你可以改成自己需要的默认值 df['new'] = df['g'].map(category_mapping).fillna(0)
内容的提问来源于stack exchange,提问作者bismo
相关产品推荐
相关产品推荐

