繁体   English   中英

如何使用与 pandas dataframe 相同的键转换 dict 列表的 dict 列表

[英]How to convert list of dict of list of dict with same key as pandas dataframe

我有这样的 json 响应-

{
  "returnedRowCount":2,
  "columns":[
    {"name":"type","type":"TEXT","index":0},
    {"name":"type","type":"TEXT","index":1},
    {"name":"dept","type":"TEXT","index":2}],
  "rows":[
    {"row":[{"v":"type1"},{"v":"name1"},{"v":"dept1"}]},
    {"row":[{"v":"type2"},{"v":"name2"},{"v":"dept2"}]}
    ]
}

需要一种转换为 dataframe 的方法,如下所示 -

    type name dept
 0  type1 name1  dept1 
 1  type2 name2  dept1

我相信这需要理解才能首先转换为 dict 但无法弄清楚

是的,您可以使用列表推导提取列名和行数据:

import pandas as pd

j = {
  "returnedRowCount":2,
  "columns":[
    {"name":"type","type":"TEXT","index":0},
    {"name":"name","type":"TEXT","index":1},
    {"name":"dept","type":"TEXT","index":2}],
  "rows":[
    {"row":[{"v":"type1"},{"v":"name1"},{"v":"dept1"}]},
    {"row":[{"v":"type2"},{"v":"name2"},{"v":"dept2"}]}
    ]
}

data = [[c['v'] for c in r] for r in [row['row'] for row in j['rows']]]
columns = [c['name'] for c in j['columns']]
df = pd.DataFrame(data, columns=columns)

结果:

    type   name   dept
0  type1  name1  dept1
1  type2  name2  dept2

你也可以这样做:

data = [[vals['v'] for vals in dat['row']] for dat in j['rows']]
pd.DataFrame(data, columns = pd.DataFrame(j['columns'])['name'].tolist())

    type   name   dept
0  type1  name1  dept1
1  type2  name2  dept2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM