Доступ к JSON в dataframe

#python #json #pandas

#python #json #панды

Вопрос:

у меня есть этот json

 "delivery_order":{
      "created_at":{
         "0":"2020-01-27 00:00:)0",
         "1":"2020-07-04 00:00:00",
         "2":"2020-05-26 00:00:00",
      },
      "status":{
         "0":"delivery_completed",
         "1":"pending",
         "2":"pending",
      }
   },
  

в моем коде я сохраняю его следующим образом

 order_data = pd.DataFrame(data['delivery_order'])
  

мой вопрос в том, как мне получить доступ к индексу 0 в json, чтобы json выглядел так

 "delivery_order":{
      "created_at":{
         "0":"2020-01-27 00:00:)0",
      },
      "status":{
         "0":"delivery_completed",
      }
   },
  

я попробовал это, и это работает

 data['delivery_order']['created_at'][0]['status'][0]
  

но как мне получить доступ к индексу, не обращаясь к нему вручную? потому что иногда данные, отправленные с сервера, выглядят так

 "delivery_order":{
      "status":{
         "0":"delivery_completed",
         "1":"pending",
         "2":"pending",
      },
      "created_at":{
         "0":"2020-01-27 00:00:)0",
         "1":"2020-07-04 00:00:00",
         "2":"2020-05-26 00:00:00",
      }
   },
  

поэтому ручной доступ к нему по индексу, подобный этому, не сработает

 data['delivery_order']['created_at'][0]['status'][0]
  

Ответ №1:

Поскольку вы используете pandas, используйте from_dict :

 # create df
df = pd.DataFrame.from_dict(d['delivery_order'], orient='columns')
print(df)

            created_at              status
0  2020-01-27 00:00:)0  delivery_completed
1  2020-07-04 00:00:00             pending
2  2020-05-26 00:00:00             pending


# get value by index
index = 1
df.iloc[index].to_dict()