Я создаю вложенный json и сохраняю его в виде списка.Вот мой код, который получает правильный иерархический JSON, как и предполагалось.
Пример данных:
источник данных, datasource_cnt, категория, category_cnt, подкатегория, subcategory_cnt Бюро статистики труда, 44, Занятость изаработная плата, 44, занятость и заработная плата, 44
import pandas as pd
df=pd.read_csv('queryhive16273.csv')
def split_df(df):
for (vendor, count), df_vendor in df.groupby(["datasource", "datasource_cnt"]):
yield {
"vendor_name": vendor,
"count": count,
"categories": list(split_category(df_vendor))
}
def split_category(df_vendor):
for (category, count), df_category in df_vendor.groupby(
["category", "category_cnt"]
):
yield {
"name": category,
"count": count,
"subCategories": list(split_subcategory(df_category)),
}
def split_subcategory(df_category):
for (subcategory, count), df_subcategory in df_category.groupby(
["subcategory", "subcategory_cnt"]
):
yield {
"count": count,
"name": subcategory,
}
abc=list(split_df(df))
ABC содержит данные, как показано ниже.Это ожидаемый результат.
[{
'count': 44,
'vendor_name': 'Bureau of Labor Statistics',
'categories': [{
'count': 44,
'name': 'Employment and wages',
'subCategories': [{
'count': 44,
'name': 'Employment and wages'
}]
}]
}]
Теперь я пытаюсь сохранить его в файл json.
with open('your_file2.json', 'w') as f:
for item in abc:
f.write("%s\n" % item)
#f.write(abc)
Здесь возникает проблема.Это записывает данные таким способом (см. Ниже), который не является допустимым форматом JSON.Если я пытаюсь использовать json dump, выдается «ошибка сериализации json»
Не могли бы вы помочь мне здесь.
{
'count': 44,
'vendor_name': 'Bureau of Labor Statistics',
'categories': [{
'count': 44,
'name': 'Employment and wages',
'subCategories': [{
'count': 44,
'name': 'Employment and wages'
}]
}]
}
Ожидаемый результат:
[{
"count": 44,
"vendor_name": "Bureau of Labor Statistics",
"categories": [{
"count": 44,
"name": "Employment and wages",
"subCategories": [{
"count": 44,
"name": "Employment and wages"
}]
}]
}]