Python中将字典转换为DataFrame时source_id重复、结构不一致问题求解
问题原因
pandas 构造 DataFrame 的默认逻辑是,以输入字典中最长的可迭代字段的长度作为行数,其余标量字段会自动广播复制匹配行数。你提供的字典里parsed_address是长度为4的列表,标量source_id因此被复制4次,最终生成4行数据,不符合预期。
解决方案
要让parsed_address作为整体多值字段保留在单行中,只需将字典所有值包装为单元素列表,强制pandas生成1行数据即可:
# 方案1:手动指定字段构造 df4 = pd.DataFrame({ "source_id": [dic["source_id"]], "parsed_address": [dic["parsed_address"]] }) # 方案2:通用写法,无需手动枚举字段 df4 = pd.DataFrame({k: [v] for k, v in dic.items()})
效果验证
转换后的DataFrame仅1行,结构完全匹配原字典。执行如下代码查看输出:
print(df4.to_dict(orient="records"))
输出结果为:
[{'source_id': 123, 'parsed_address': [{'address_type': 'Primary', 'address': [{'address_line_1': '18 Atherton', 'address_line_2': 'nan'}]}, {'address_type': 'directory', 'address': [{'address_line_1': '130 E Chapman Ave Apt 312', 'address_line_2': 'nan'}]}, {'address_type': 'home', 'address': [{'address_line_1': '9722 Walnut St', 'address_line_2': 'nan'}]}, {'address_type': 'work', 'address': [{'address_line_1': '1325 S Grand Ave', 'address_line_2': 'nan'}]}]}]
内容的提问来源于stack exchange,提问作者Naveen
相关产品推荐
相关产品推荐

