如何用Python结合Pandas DataFrame实现句子字母转对应数字并求和
字母转数字并求和实现方案
问题说明
现有如下字母与数字关联的Pandas DataFrame:
import pandas as pd # 初始化列表数据 data = [['A', 1], ['B', 2], ['C', 3], ['D', 4], ['E', 5], ['F', 6]] # 创建DataFrame df = pd.DataFrame(data, columns=['Letters', 'Num'])
需要实现:将包含上述字母的句子转换为对应数字(空格对应0),并计算所有数字的总和。示例如下:
句子:
sen = 'Ab df ec'
转换后对应序列为1 2 0 4 6 0 5 3,求和结果为1+2+0+4+6+0+5+3=21。
实现步骤与代码
1. 构建字母-数字映射字典
先将DataFrame转换为字典,方便快速查找字母对应的数字,同时统一处理大小写(示例句子包含小写字母,因此补充小写字母的映射):
# 构建字母到数字的映射字典 char_map = df.set_index('Letters')['Num'].apply(str).to_dict() # 补充小写字母的映射,避免大小写匹配问题 char_map.update({k.lower(): v for k, v in char_map.items()})
2. 遍历字符并计算总和
通过遍历句子的每个字符,转换为对应数字后累加求和:
sen = 'Ab df ec' # 用生成器表达式简化求和逻辑 total = sum(int(char_map[char]) if char != ' ' else 0 for char in sen) print(f"句子转换后的总和为:{total}")
完整代码
import pandas as pd # 初始化列表数据 data = [['A', 1], ['B', 2], ['C', 3], ['D', 4], ['E', 5], ['F', 6]] # 创建DataFrame df = pd.DataFrame(data, columns=['Letters', 'Num']) # 构建支持大小写的字母-数字映射字典 char_map = df.set_index('Letters')['Num'].apply(str).to_dict() char_map.update({k.lower(): v for k, v in char_map.items()}) # 目标句子 sen = 'Ab df ec' # 计算总和 total = sum(int(char_map[char]) if char != ' ' else 0 for char in sen) print(f"句子转换后的总和为:{total}")
代码说明
- 映射字典同时保存大小写字母的键,确保句子中无论大小写字母都能匹配到对应数字。
- 使用生成器表达式结合
sum()函数,简化循环累加的逻辑,代码更简洁高效。 - 空格直接对应0,不参与额外计算。
内容的提问来源于stack exchange,提问作者rakshu vin
相关产品推荐
相关产品推荐

