#python #json #pandas
#python #json #pandas
Вопрос:
Я пытаюсь преобразовать файл JSON в фрейм данных Pandas. Файл JSON выглядит следующим образом:
{ "ABC":[
{"AAA":2},
{"BBB":12},
{"CCC":12}
],
"DEF":{"X":3, "Y":3,"Z":4}
}
По сути, это вложенный словарь, в котором некоторые элементы являются списками, и эти списки могут дополнительно содержать словари или списки. Уровень вложенности может быть 20 .
Я написал рекурсивную функцию для преобразования всех объектов списка в файле в dictionary, а затем использую pandas.io.json.json_normalize
для преобразования его в фрейм данных pandas.
Интересно, есть ли какой-нибудь лучший способ сделать это, потому что мне кажется, что это обычная проблема. Интересно, есть ли уже пакет, который делает это. Ценю это.
Комментарии:
1. Я считаю, что ваш подход — это то, что должно быть сделано в этих случаях. фреймы данных являются двумерными по определению. Вложив dicts, вы фактически добавляете «измерения» к своим данным, и вам нужно как-то нормализовать их, чтобы они имели два измерения.
pd.io.json.json_normalize
по умолчанию это не относится к спискам объектов, и поскольку у вас более 20 (и, вероятно, переменная) глубина, рекурсивный подход к нормализации звучит довольно разумно2. Можете ли вы показать свою рекурсивную функцию? Невозможно предложить лучший способ сгладить этот JSON, не видя его.
itertools
вероятно, это лучший пакет для обработки таких данных. Хотя у вас смешанные типы, это интересная дискуссия по теме.