Pandas DataFrame中姓名列字母赋值求和新增列的方法求助
解决方法
- 处理大小写匹配问题
姓名里的字母通常会有大小写差异(比如Larry里的大写L),推荐把姓名统一转成小写/大写后再匹配字典,避免重复定义大小写键值对。 - 编写字母求和函数
写一个函数遍历姓名的每个字符,跳过空格这类不在字典中的字符,累加对应数值。 - 批量生成新列
用Pandas的apply方法将函数批量应用到姓名列,生成结果列。
完整代码示例
import pandas as pd # 读取你的Excel文件(替换为实际文件路径) df = pd.read_excel("your_data.xlsx") # 自定义字母映射字典(示例仅写了部分,你可以补全a-z的对应值) ORDINAL = {'a':1, 'b':2, 'c':3, 'e':5, 'h':8, 'l':12, 'n':14, 'o':15, 'r':18, 'y':25} # 定义姓名得分计算函数 def get_name_score(name): total = 0 # 统一转小写后遍历每个字符 for char in name.lower(): # 只累加字典中存在的字符(自动跳过空格) if char in ORDINAL: total += ORDINAL[char] return total # 生成新列"姓名得分" df['姓名得分'] = df['姓名'].apply(get_name_score) # 查看结果 print(df[['姓名', '姓名得分']])
关键细节说明
name.lower():将姓名统一转为小写,确保和字典的键匹配,比如Larry转成larry后,就能匹配字典里的l/a/r/r/y。- 跳过非字典字符:通过
if char in ORDINAL判断,避免空格、特殊符号这类不在字典中的字符引发KeyError。 apply方法:Pandas中用于对列/行的每个元素批量应用自定义函数,是处理这类逐行计算的高效方式。
内容的提问来源于stack exchange,提问作者Akachi
相关产品推荐
相关产品推荐

