Python - How to convert JSON File to Dataframe

前端 未结 4 1349
故里飘歌
故里飘歌 2020-11-27 16:36

How can I convert a JSON File as such into a dataframe to do some transformations.

For Example if the JSON file reads:

{\"FirstName\":\"John\",

\"         


        
相关标签:
4条回答
  • 2020-11-27 16:37
    import pandas as pd
    print(pd.json_normalize(your_json))
    

    This will Normalize semi-structured JSON data into a flat table

    Output

      FirstName LastName MiddleName password    username
          John     Mark      Lewis     2910  johnlewis2
    
    0 讨论(0)
  • 2020-11-27 16:44
    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
    

    This should look like this:.

             FirstName LastName MiddleName password    username
    0001      John     Mark      Lewis     2910  johnlewis2
    
    0 讨论(0)
  • 2020-11-27 16:47

    Creating dataframe from dictionary object.

    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
    

    If you have nested columns then you first need to normalize the data:

    data = [
      {
        'name': {
          'first': 'vikash',
          'last': 'singh'
        },
        'age': 27
      },
      {
        'name': {
          'first': 'satyam',
          'last': 'singh'
        },
        'age': 14
      }
    ]
    
    df = pd.DataFrame.from_dict(pd.json_normalize(data), orient='columns')
    
    df    
    Out[8]:
    age name.first  name.last
    0   27  vikash  singh
    1   14  satyam  singh
    

    Source:

    • pandas.DataFrame.from_dict
    • pandas.json_normalize
    0 讨论(0)
  • 2020-11-27 16:56

    There are 2 inputs you might have and you can also convert between them.

    1. input: listOfDictionaries --> use @VikashSingh solution

    example: [{"":{"...

    The pd.DataFrame() needs a listOfDictionaries as input.

    1. input: jsonStr --> use @JustinMalinchak solution

    example: '{"":{"...

    If you have jsonStr, you need an extra step to listOfDictionaries first. This is obvious as it is generated like:

    jsonStr = json.dumps(listOfDictionaries)
    

    Thus, switch back from jsonStr to listOfDictionaries first:

    listOfDictionaries = json.loads(jsonStr)
    
    0 讨论(0)
提交回复
热议问题