You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:09:04