如何遍历DataFrame并生成多个指定结构的嵌套字典?
遍历DataFrame生成多个独立嵌套字典的解决方案
需求说明
基于给定的模板嵌套字典,遍历Pandas DataFrame的每一行,将每行的book_name和amount_page字段值替换到模板字典的book1列表中,最终生成与DataFrame行数一致的独立嵌套字典。
代码实现
import pandas as pd import copy # 用于深拷贝嵌套字典,避免引用关联问题 # 定义数据源并创建DataFrame data = {'book_name': ['philosopher', 'chamber', 'azkaban', 'goblet', 'phoenix','prince','hallow'], 'amount_page': [220, 280, 330, 450, 1000,650,600] } df = pd.DataFrame(data) # 模板字典 template_dict = { "A": "EXAMPLE", "comment": "This is an example", "author": "JKROWLING", "book1": [ { "book_name": 'place book name', "amount_pages": 'place book_pages' } ] } # 生成结果字典列表 result_dicts = [] for _, row in df.iterrows(): # 深拷贝模板字典,确保每个新字典完全独立 new_dict = copy.deepcopy(template_dict) # 替换book1中的字段值 new_dict['book1'][0]['book_name'] = row['book_name'] new_dict['book1'][0]['amount_pages'] = row['amount_page'] # 添加到结果列表 result_dicts.append(new_dict) # 可选:打印验证结果 for i, dict_item in enumerate(result_dicts, 1): print(f"第{i}个字典:") print(dict_item) print("---")
关键说明
- 深拷贝模板字典:由于原字典是嵌套结构,使用
copy.deepcopy()可以确保每个新生成的字典都是独立对象,不会出现修改一个字典影响其他字典的情况。如果字典嵌套层级较浅,也可以用浅拷贝template_dict.copy(),但深拷贝更稳妥。 - 遍历DataFrame:使用
df.iterrows()逐行读取DataFrame数据,row对象可直接通过字段名获取对应值。 - 替换字段值:通过索引定位到
book1列表中的字典,直接替换book_name和amount_pages的值即可。
内容的提问来源于stack exchange,提问作者Valdeloco
相关产品推荐
相关产品推荐

