python - 使用键作为新列从字典创建数据框?

标签 python json pandas dictionary

我有一本字典,正在尝试将其转换为数据框。字典本质上是嵌套的,其中键必须是列。例如:

{
"apple":[
{
"price":19,
"store":"xyz"},
{"price":13,
"store":"abc"
}
}],
"pear":[{
"price":25,
"store":"xyz"
}]
}


我希望最终数据帧的格式为

FRUIT   PRICE   STORE
apple   19      xyz
apple   13      abc
pear    25      xyz  

我试图通过像这样的“fruit”键进行某种类型的迭代来对列表进行排序

for fruit in fruit_dict.keys():
    df['FRUIT']=fruit

然后使用 pd.normalize 获取价格/商店,但这对我来说非常复杂。有没有更简单或更好的方法来让这本字典“扁平化”?

最佳答案

通过外部输入字典的键对 FRUIT 列使用 concat helper dict 的字典列表进行列表理解:

fruit_dict = {
"apple": [{
        "price": 19,
        "store": "xyz"
    },
    {
        "price": 13,
        "store": "abc"
    }
],
"pear": [{
    "price": 25,
    "store": "xyz"
}]}
    

df = pd.DataFrame([{**{'FRUIT':k}, **x} for k, v in fruit_dict.items() for x in v])
print (df)
   FRUIT  price store
0  apple     19   xyz
1  apple     13   abc
2   pear     25   xyz

关于python - 使用键作为新列从字典创建数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72715669/

相关文章:

json - 对此后端堆栈的反馈

python - pandas 中任意列表的笛卡尔积

python - pandas resample interpolate 正在生成 NaN

python - 如何在虚拟环境中安装python "gi"模块?

python - 如何与子进程共享父进程的 numpy 随机状态?

python - 组合 numpy 数组中的值

python - 矢量化二维插值

PHP JSON 解码(带方括号)

python - 通过python(或其他一些简单的脚本语言)中的键合并json文件

python - 有没有办法将新列添加到 Pandas 数据框,将新列的每个唯一值附加到数据框的每个现有行?