如何将嵌套字典列表转为DataFrame?pd.json_normalize无法正常工作
解决方案
首先得调整原始数据的结构,把每个字典里的水果名称提取出来作为单独字段,再和对应的units、price配对,之后就能顺利转成目标DataFrame了。
直接用列表推导式快速处理数据:
import pandas as pd data = [{'apple': {'units': 3, 'price': 4}}, {'banana': {'units': 20, 'price': 2}}, {'orange': {'units': 15, 'price': 5}}] # 重构数据结构 processed_data = [ {'fruit': fruit_name, **details} for item in data for fruit_name, details in item.items() ] # 转换为DataFrame df = pd.DataFrame(processed_data) print(df)
运行后会得到你要的结果:
fruit units price 0 apple 3 4 1 banana 20 2 2 orange 15 5
为啥pd.json_normalize没达到预期?
pd.json_normalize默认会把每个字典的键当作列名,但你的数据里每个元素的键都是不同的水果名,所以生成的DataFrame会有apple、banana、orange三列,每列对应一个嵌套字典,其他行的这些列自然就都是NaN了,完全不符合你要的结构。先把数据重构为统一字段的格式,就能轻松生成符合要求的DataFrame。
内容的提问来源于stack exchange,提问作者Orchid9
相关产品推荐
相关产品推荐

