gpt4 book ai didi

python - Pandas:将多索引 JSON 作为 Pandas 数据帧读取

转载 作者:行者123 更新时间:2023-12-04 11:22:37 25 4
gpt4 key购买 nike

我有一个 JSON 文件,如下所示:

{
"ALPHA": [
{
"date": "2021-06-22",
"constituents": {
"BBB": 0,
"EEE": 1,
"BTB": 1,
"YUY": 1
}
},
{
"date": "2021-09-07",
"constituents": {
"BBB": 0,
"EEE": 0,
"BTB": 0,
"YUY": 0
}
}
],
"BETA": [
{
"date": "2021-06-22",
"constituents": {
"BBB": 1,
"EEE": 1,
"BTB": 1,
"YUY": 1
}
},
{
"date": "2021-09-07",
"constituents": {
"BBB": 1,
"EEE": 1,
"BTB": 1,
"YUY": 1
}
}
],

"THETA": [
{
"date": "2021-06-22",
"constituents": {
"BBB": 0,
"EEE": 1,
"BTB": 1,
"YUY": 0
}
},
{
"date": "2021-08-20",
"constituents": {
"BBB": 0,
"EEE": 1,
"BTB": 1,
"YUY": 0
}
},
{
"date": "2021-09-07",
"constituents": {
"BBB": 0,
"EEE": 1,
"BTB": 1,
"YUY": 0
}
}
]
}
我想将上面的内容读入 Pandas 数据框中,其中第一个索引是日期,第二个索引是第一个键(即“ALPHA”、“BETA”、“THETA”),列是内部键(即“BBB","EEE", "BTB","YUY"),单元格值就是这些内键的值。
如何从 JSON 文件中将其读入 Pandas?

最佳答案

您可以使用 pd.Series 使用 ALPHA 将 JSON 导入 Pandas 系列, BETA作为索引和元素作为列表。然后通过 .explode() 将 JSON 列表扩展为单个 JSON .通过 .apply() 将内部 JSON 扩展到数据框+ pd.Series .
追加 date作为索引 .set_index() append=True ;交换 date从第二个索引到第一个索引 .swaplevel() .
最后取专栏constituents并通过 .apply() 进一步将内部 JSON 扩展为数据帧+ pd.Series , 如下:
(假设您已经将 JSON 文件加载到 j 中)

df = (pd.Series(j)
.explode()
.apply(pd.Series)
.set_index('date', append=True)
.swaplevel()['constituents']
.apply(pd.Series)
)
数据输入:
j = {'ALPHA': [{'date': '2021-06-22',
'constituents': {'BBB': 0, 'EEE': 1, 'BTB': 1, 'YUY': 1}},
{'date': '2021-09-07',
'constituents': {'BBB': 0, 'EEE': 0, 'BTB': 0, 'YUY': 0}}],
'BETA': [{'date': '2021-06-22',
'constituents': {'BBB': 1, 'EEE': 1, 'BTB': 1, 'YUY': 1}},
{'date': '2021-09-07',
'constituents': {'BBB': 1, 'EEE': 1, 'BTB': 1, 'YUY': 1}}],
'THETA': [{'date': '2021-06-22',
'constituents': {'BBB': 0, 'EEE': 1, 'BTB': 1, 'YUY': 0}},
{'date': '2021-08-20',
'constituents': {'BBB': 0, 'EEE': 1, 'BTB': 1, 'YUY': 0}},
{'date': '2021-09-07',
'constituents': {'BBB': 0, 'EEE': 1, 'BTB': 1, 'YUY': 0}}]}
输出
print(df)


BBB EEE BTB YUY
date
2021-06-22 ALPHA 0 1 1 1
2021-09-07 ALPHA 0 0 0 0
2021-06-22 BETA 1 1 1 1
2021-09-07 BETA 1 1 1 1
2021-06-22 THETA 0 1 1 0
2021-08-20 THETA 0 1 1 0
2021-09-07 THETA 0 1 1 0

关于python - Pandas:将多索引 JSON 作为 Pandas 数据帧读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69213508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com