python - 从 json 创建 pandas MultiIndex Dataframe
问题描述
我从网络服务收到以下 json:
{
"headers":[
{
"seriesId":"18805",
"Name":"Name1",
"assetId":"4"
},
{
"seriesId":"18801",
"Name":"Name2",
"assetId":"209"
}
],
"values":[
{
"Date":"01-Jan-2021",
"18805":"127.93",
"18801":"75.85"
}
]
}
有没有办法从这些数据创建一个 MultiIndex 数据框?我希望 Date 是行索引,其余的是列索引。
解决方案
- values键是一个直接的数据框
- 列可以从标题键重建
js = {'headers': [{'seriesId': '18805', 'Name': 'Name1', 'assetId': '4'},
{'seriesId': '18801', 'Name': 'Name2', 'assetId': '209'}],
'values': [{'Date': '01-Jan-2021', '18805': '127.93', '18801': '75.85'}]}
# get values into dataframe
df = pd.DataFrame(js["values"]).set_index("Date")
# get headers for use in rebuilding column names
dfc = pd.DataFrame(js["headers"])
# rebuild columns
df.columns = pd.MultiIndex.from_tuples(dfc.apply(tuple, axis=1), names=dfc.columns)
print(df)
seriesId 18805 18801
Name Name1 Name2
assetId 4 209
Date
01-Jan-2021 127.93 75.85
推荐阅读
- php - php中数组到字符串的转换问题
- excel - VBA在命令按钮上显示/隐藏图像或形状单击事件对数据进行排序
- node.js - 如何使用 NodeJs POST 请求下载分块文件?
- reactjs - AWS AppSync 将 Gatsby-Image 流体图像作为外键添加到其他 GraphQL 模型
- vue.js - 使用 Vue Storybook 时无法编译 sass
- java - UFT Eclipse IDE
- meshlab - 无法在 meshlab 中保存四边形网格
- mysql - 如何扩展MYSQL的数据库命名限制
- g++ - 我可以用g ++获取虚拟方法表的大小吗
- html - 在图像中插入视频并保持响应