如何移除字典中不在DataFrame列名内的键?
移除字典中与DataFrame列名不匹配的键
方法一:生成新字典(推荐)
直接通过字典推导式筛选出键存在于DataFrame列名中的项,这种方式不会修改原字典,避免意外影响其他逻辑:
import pandas as pd filename='template' data= [['','','','','','','','Auto','','','','','']] df= pd.DataFrame(data,columns=['first','last','state','lang','country','company','email','industry', 'System_Type__c','AccountType','segment','existing','permission']) valid= {'industry': ['Automotive'], 'SME Vertical': ['Agriculture'], 'System_Type__c': ['Access'], 'AccountType': ['Commercial']} # 获取DataFrame的列名列表 col_list = list(df.columns) # 生成只包含有效键的新字典 valid_cleaned = {k: v for k, v in valid.items() if k in col_list} print(valid_cleaned)
输出结果:
{'industry': ['Automotive'], 'System_Type__c': ['Access'], 'AccountType': ['Commercial']}
方法二:原地删除无效键
如果不需要保留原字典,可以先收集所有需要删除的键,再逐个删除:
使用del关键字
# 收集所有不在列名中的键 keys_to_remove = [k for k in valid if k not in col_list] # 逐个删除 for k in keys_to_remove: del valid[k] print(valid)
使用pop()方法
pop()可以在删除时返回对应的值,若键不存在还能指定默认值避免报错(这里因为已经确认键存在,可省略默认值):
for k in keys_to_remove: valid.pop(k) print(valid)
两种原地删除方法最终都会将原valid字典修改为你需要的结果。
内容的提问来源于stack exchange,提问作者user19702551
相关产品推荐
相关产品推荐

