Преобразование файла json в фрейм данных для анализа вложенных данных json

ниже моя структура json

{"status":"success","data":{"resultType":"matrix","result":[{"metric":{"env":"allahabad","instance":"10.45.69"},"values":[[16080,"79.03999999999844"],[1608,"85.866666666668"]}}

все вышеперечисленное json находится в одной строке

Я хочу преобразовать его в фрейм данных, который похож на

data__result__metric__env|data__result__metric__instance|data__result__values__001|data__result__values__002
 allahabad               |10.45.69           |16080                |79.03999999999844

Это немного неясно: вы хотите (а) только 2 столбца data__result__values и значения, заполненные в этих столбцах, или (б) 28 столбцов значений? Если (а): Чем должны быть заполнены первые два столбца после первой строки?

Timus 23.12.2020 15:21
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
82
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как упоминалось в моем комментарии, мне не совсем понятно, как должен выглядеть ваш ожидаемый результат. Я предполагаю, что вы ищете решение с двумя столбцами значений.

С вашими данными json (мне кажется, что в вашем примере отсутствуют некоторые закрывающие скобки\скобки)

json_data = {"status":"success","data":{"resultType":"matrix","result":[{"metric":{"env":"allahabad","instance":"10.45.69"},"values":[[16080,"79.03999999999844"]]]}]}}

этот

data = json_data['data']['result'][0]
df_data = {f'data__result__metric__{key}': [value] * len(data['values'])
           for key, value in data['metric'].items()}
df_data.update((f'data__result__values__00{i + 1}', values)
               for i, values in enumerate(zip(*data['values'])))
df = pd.DataFrame(df_data)

дает вам следующий фрейм данных df:

   data__result__metric__env data__result__metric__instance  \
0                  allahabad              10.45.69  
1                  allahabad              10.45.69  
2                  allahabad              10.45.69  
...
13                 allahabad              10.45.69   

    data__result__values__001 data__result__values__002  
0                  16080         79.03999999999844  
1                  16080           85.866666666668  
2                  16080           85.866666666668  
...
13                 16080         82.21000000000095  

Другие вопросы по теме