如何将JSON数据转换为数据帧?

时间:2019-11-26 10:02:19

标签: python json pandas dataframe

我得到了这样的JSON数据:

jsonData = {
  "0":{
    "columnA":"a",
    "columnB":"b"
  },
  "1":{
    "columnA":"c",
    "columnB":"d"
  }
}

如何将其转换为这样的数据帧:

      rowData
0    {"columnA":"a","columnB":"b"}
1    {"columnA":"c","columnB":"d"}

这是我尝试过的:

df = pd.DataFrame({'rowData': jsonData})

但是我收到一个错误:

  

如果使用所有标量值,则必须传递索引

所以我尝试了:

df = pd.DataFrame({'rowData': jsonData}, index=[0])

但事实证明:

      rowData
0     {"0":{"columnA":"a","columnB":"b"},"1":{"columnA":"c","columnB":"d"}}

2 个答案:

答案 0 :(得分:1)

对我来说,您的解决方案很好:

5 em

如有必要,将json转换为dict:

jsonData = {
  "0":{
    "columnA":"a",
    "columnB":"b"
  },
  "1":{
    "columnA":"c",
    "columnB":"d"
  }
}

df = pd.DataFrame({'rowData': jsonData})
print (df)
                            rowData
0  {'columnA': 'a', 'columnB': 'b'}
1  {'columnA': 'c', 'columnB': 'd'}

如果DataFrame中的每个值都需要json:

import json

jsonData = json.dumps({
  "0":{
    "columnA":"a",
    "columnB":"b"
  },
  "1":{
    "columnA":"c",
    "columnB":"d"
  }
})

df = pd.DataFrame({'rowData': json.loads(jsonData)})
print (df)
                            rowData
0  {'columnA': 'a', 'columnB': 'b'}
1  {'columnA': 'c', 'columnB': 'd'}

答案 1 :(得分:0)

我只是将您的数据添加到列表中,并由此创建了一个数据框:

all_data = []
for value in jsonData.values():
    all_data.append(value)

df = pd.DataFrame(all_data)

Output:
Index columnA   columnB
0          a    b
1          c    d