如何为大型DataFrame批量生成关联Name列的命名字典
批量生成以Name列为键的列字典
需求背景
我有一个大型DataFrame(含100+列、数千行),需要为每一列生成独立字典,字典命名规则为dict+列名,字典的键是Name列的值,对应值为该列的对应行数据。以下是简化的示例场景:
示例数据
data = {'Name': ['James', 'Miriam', 'Josh', 'Peter'], 'ID': [11,12,13,14], 'Tester': [0,0,1,1], 'Developer':[1,0,0,1], 'Architect':[0,1,0,1], 'Engineer':[1,1,0,0], 'Cyber_security':[1,0,0,0], 'IT_support':[0,1,0,0], 'Business_analyst':[0,0,0,1]}
生成的DataFrame:
Name ID Tester Developer Architect Engineer Cyber_security IT_support Business_analyst 0 James 11 0 1 0 1 1 0 0 1 Miriam 12 0 0 1 1 0 1 0 2 Josh 13 1 0 0 0 0 0 0 3 Peter 14 1 1 1 0 0 0 1
当前手动实现方式
目前我通过逐列编写代码生成字典,但面对大量列时代码过于冗长:
lstName = list(df.Name) dictTester = dict(zip(list(df.Name), list(df.Tester))) dictDeveloper = dict(zip(list(df.Name), list(df.Developer))) # ... 其余列的重复代码
批量解决方案
可以通过遍历DataFrame的列名,利用globals()动态生成变量,实现批量创建字典:
import pandas as pd # 加载DataFrame df = pd.DataFrame(data) # 遍历所有列,跳过Name列(如需包含可移除判断) for col in df.columns: if col == 'Name': continue # 生成符合规则的字典变量名 var_name = f'dict{col}' # 动态创建字典并绑定为全局变量 globals()[var_name] = dict(zip(df['Name'], df[col]))
说明
- 代码会自动为每一列(除Name外)生成
dict+列名格式的字典,比如dictID、dictCyber_security等,可直接独立调用 - 若需要包含
Name列本身,删除if col == 'Name': continue即可
验证示例
运行代码后,调用dictTester会得到:
{'James': 0, 'Miriam': 0, 'Josh': 1, 'Peter': 1}
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

