如何用字典推导式根据DataFrame列中的键计算字典值总和?
计算DataFrame匹配键的字典值总和
方法一:简洁版(生成器直接求和)
import pandas as pd Er = {'A':3,'B':5,'C':7,'D':6} df = pd.DataFrame({'r': ['A', 'B', 'D']}) # 直接筛选匹配键对应的值并求和 total = sum(v for k, v in Er.items() if k in df['r'].values) print(total) # 输出 14
方法二:显式用字典推导式构造匹配集合
如果严格要求先通过字典推导式生成匹配的键值对,再求和:
import pandas as pd Er = {'A':3,'B':5,'C':7,'D':6} df = pd.DataFrame({'r': ['A', 'B', 'D']}) # 用字典推导式筛选出df中存在的键值对 matched_dict = {k: v for k, v in Er.items() if k in df['r'].values} # 对筛选后的值求和 total = sum(matched_dict.values()) print(total) # 输出 14
大数据集优化方案
当DataFrame的r列数据量较大时,把列值转成集合可以大幅提升键的存在性判断速度:
import pandas as pd Er = {'A':3,'B':5,'C':7,'D':6} df = pd.DataFrame({'r': ['A', 'B', 'D']}) # 转集合加速判断 r_key_set = set(df['r']) matched_dict = {k: v for k, v in Er.items() if k in r_key_set} total = sum(matched_dict.values()) print(total) # 输出 14
内容的提问来源于stack exchange,提问作者mrsprawin
相关产品推荐
相关产品推荐

