Python - 如何将JSON文件转换为Dataframe

时间:2016-12-15 16:09:41

标签: python json pandas dataframe

如何将JSON文件转换为数据帧以进行某些转换。

例如,如果JSON文件显示为:

{"FirstName":"John",

"LastName":"Mark",

"MiddleName":"Lewis",

"username":"johnlewis2",

"password":"2910"}

如何将其转换为类似

的表格
Column -> FirstName | LastName | MiddleName | username | password



Row ----->    John | Mark |Lewis | johnlewis2 |2910

4 个答案:

答案 0 :(得分:32)

从字典对象创建数据框。

import pandas as pd
data = [{'name': 'vikash', 'age': 27}, {'name': 'Satyam', 'age': 14}]
df = pd.DataFrame.from_dict(data, orient='columns')

df
Out[4]:
   age  name
0   27  vikash
1   14  Satyam

如果您有嵌套列,那么首先需要规范化数据:

from pandas.io.json import json_normalize
data = [
  {
    'name': {
      'first': 'vikash',
      'last': 'singh'
    },
    'age': 27
  },
  {
    'name': {
      'first': 'satyam',
      'last': 'singh'
    },
    'age': 14
  }
]

df = pd.DataFrame.from_dict(json_normalize(data), orient='columns')

df    
Out[8]:
age name.first  name.last
0   27  vikash  singh
1   14  satyam  singh

来源:https://github.com/vi3k6i5/pandas_basics/blob/master/1_a_create_a_dataframe_from_dictonary.ipynb

答案 1 :(得分:5)

from pandas.io.json import json_normalize
print json_normalize(your_json)

这会将半结构化JSON数据规范化为平面表

<强>输出

  FirstName LastName MiddleName password    username
      John     Mark      Lewis     2910  johnlewis2

答案 2 :(得分:3)

jsondata = '{"0001":{"FirstName":"John","LastName":"Mark","MiddleName":"Lewis","username":"johnlewis2","password":"2910"}}'
import json
import pandas as pd
jdata = json.loads(jsondata)
df = pd.DataFrame(jdata)
print df.T

这应该是这样的:。

         FirstName LastName MiddleName password    username
0001      John     Mark      Lewis     2910  johnlewis2

答案 3 :(得分:1)

您可能有2个输入,也可以在它们之间进行转换。

  1. 输入:listOfDictionaries->使用@VikashSingh解决方案

示例:[{"":{"...

pd.DataFrame()需要listOfDictionaries作为输入。

  1. 输入:jsonStr->使用@JustinMalinchak解决方案

示例:'{"":{"...

如果您具有jsonStr,则需要首先执行额外的步骤以将listOfDictionaries设置为List。这很明显,因为它的生成方式如下:

jsonStr = json.dumps(listOfDictionaries)

因此,首先从jsonStr切换回listOfDictionaries:

listOfDictionaries = json.loads(jsonStr)