Skip to content Skip to sidebar Skip to footer

Convert A Pandas Dataframe Into A Nested Json

I need to convert pandas Dataframe into nested json. The output of .to_json gives the following {'Annual Expenditure':{'0':250,'1':250},'Annual Frequency':{'0':1,'1':1},'Avg days'

Solution 1:

Use set_index + to_json with parameter orient:

df.set_index('Guest').to_json('file.json', orient='index')

{"25642":{"Annual Expenditure":250,"Annual Frequency":1,"Avg days":null,"AvgLTV":13305.7692307692,"First visit":1449100800000,"Frequency":1,"Last visit":1449100800000,"Monetory":250,"RFMClass":"444","Recency":701,"Visit_Ids":[80611]},"55521":{"Annual Expenditure":250,"Annual Frequency":1,"Avg days":null,"AvgLTV":13305.7692307692,"First visit":1490054400000,"Frequency":1,"Last visit":1490054400000,"Monetory":250,"RFMClass":"144","Recency":227,"Visit_Ids":[342104]}}

Input DataFrame:

d = {"Annual Expenditure":{"0":250,"1":250},"Annual Frequency":{"0":1,"1":1},"Avg days":{"0":np.nan,"1":np.nan},"First visit":{"0":1449100800000,"1":1490054400000},"Frequency":{"0":1,"1":1},"Guest":{"0":25642,"1":55521},"Last visit":{"0":1449100800000,"1":1490054400000},"Monetory":{"0":250,"1":250},"Recency":{"0":701,"1":227},"Visit_Ids":{"0":[80611],"1":[342104]},"RFMClass":{"0":"444","1":"144"},"AvgLTV":{"0":13305.7692307692,"1":13305.7692307692}}

df = pd.DataFrame(d)
print (df)
   Annual Expenditure  Annual Frequency  Avg days        AvgLTV  \
0                 250                 1       NaN  13305.769231   
1                 250                 1       NaN  13305.769231   

     First visit  Frequency  Guest     Last visit  Monetory RFMClass  Recency  \
0  1449100800000          1  25642  1449100800000       250      444      701   
1  1490054400000          1  55521  1490054400000       250      144      227   

  Visit_Ids  
0   [80611]  
1  [342104] 

EDIT:

j = df.set_index('Guest').to_json(orient='index')
j_final = {45: j}

Post a Comment for "Convert A Pandas Dataframe Into A Nested Json"