Search code examples
pythonjsonpandasdataframeto-json

how to create a dataframe to generate json in the given format


I need to generate a json from my dataframe but I have tried many formats of df but still I am not able get the required json format.

My required json format is,

[
    {
        "Keyword": "Red", 
        "values": [
            {
                "value": 5, 
                "TC": "Color"
            }            
        ]
    }, 
     {
        "Keyword": "Orange", 
        "values": [
            {
                "value": 5, 
                "TC": "Color"
            }            
        ]
    }, 
     {
        "Keyword": "Violet", 
        "values": [
            {
                "value": 5, 
                "TC": "Color"
            }            
        ]
    }
]

I want a df to generate this json. Please help.

but currently im getting df.to_json:

 {"Names":{"0":"Ram","1":"pechi","2":"Sunil","3":" Ravi","4":"sri"},"Values":{"0":"[{'value':2,'TC': 'TC Count'}]","1":"[{'value':2,'TC': 'TC Count'}]","2":"[{'value':1,'TC': 'TC Count'}]","3":"[{'value':1,'TC': 'TC Count'}]","4":"[{'value':1,'TC': 'TC Count'}]"}}  

Solution

  • I think you need:


    print (df)
    
      Keyword     TC  value
    0     Red  Color      5
    1  Orange  Color      5
    2  Violet  Color      5
    
    j = (df.set_index('Keyword')
            .apply(lambda x: [x.to_dict()], axis=1)
            .reset_index(name='values')
            .to_json(orient='records'))
    print (j)
    
    [{"Keyword":"Red","values":[{"TC":"Color","value":5}]},
     {"Keyword":"Orange","values":[{"TC":"Color","value":5}]},
     {"Keyword":"Violet","values":[{"TC":"Color","value":5}]}]
    

    For write to file:

    (df.set_index('Keyword')
       .apply(lambda x: [x.to_dict()], axis=1)
       .reset_index(name='values')
       .to_json('myfile.json', orient='records'))