首页 > 解决方案 > 从 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 是行索引,其余的是列索引。

标签: pythonpandasdataframe

解决方案


  • 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

推荐阅读