pandas 如何在阅读带panda的嵌套json时获取元数据

j0pj023g  于 2023-02-02  发布在  其他
关注(0)|答案(1)|浏览(123)

我尝试使用pandas json_normalize从json中获取元数据,但是它没有按预期工作。
我有一个具有以下结构的json fine

data=[
    {'a':'aa',
    'b':{'b1':'bb1','b2':'bb2'},
    'c':[{
        'ca':[{'ca1':'caa1'
            }]
        }]
    }]

我想得到以下信息
| 钙离子|项目a| b.b1 |
| - ------|- ------|- ------|
| 钙铝|aa|bb1|
我希望这能奏效

pd.json_normalize(data, record_path=['c','ca'], meta = ['a',['b','b1']])

但是它没有找到键b1。奇怪的是,如果我的record_path是'c',它确实找到了键。我觉得我错过了什么,但是我不知道是什么。我感谢任何帮助!

q35jwt9p

q35jwt9p1#

向下到第一层,您可以获取元数据作为您想要保留的列的列表。记录路径使用列表来Map您想要向下到的层。最后,列b是一个dict,您可以将其应用到Series concat中,返回到df中,并弹出以删除未打包的dict列。

df = pd.json_normalize(
    data=data,
    meta=['a', 'b'],
    record_path=['c', 'ca']
)
df = pd.concat([df.drop(['b'], axis=1), df['b'].apply(pd.Series)], axis=1)
print(df)

输出:

ca1   a   b1   b2
0  caa1  aa  bb1  bb2

相关问题