Перевести json в csv python
Имеется файл json с разной вложенностью и неоднородной структурой:
{
"item1":
{"props1": [1, 2, 3, 4, 5, 6],
"props2": {"key1":"value1", "key2":"value2", "key3":"value3"},
"props3": "string_value" },
"item2":
{"props1": [1, 2, 3, 4, 5, 6],
"props2": {"key1":"value1", "key2":"value2", "key3":"value3"},
"props3": "string_value" }
}
То есть у каждого предмета есть ряд характеристик, которые могут быть словарем, списком или строкой. Мне нужно превратить это в csv подобного вида:
item_name | props1 | props2_key1 | props2_key2 | props2_key3| props3
item1 | list | value1 | value2 | value3 | string
item1 | list | value1 | value2 | value3 | string
Есть ли простые варианты сделать это?
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Воспользуйтесь модулем Pandas:
import pandas as pd # pip install pandas | conda install pandas
json_data = {
"item1":
{"props1": [1, 2, 3, 4, 5, 6],
"props2": {"key1":"value1", "key2":"value2", "key3":"value3"},
"props3": "string_value" },
"item2":
{"props1": [1, 2, 3, 4, 5, 6],
"props2": {"key4":"value4", "key5":"value5", "key6":"value6"},
"props3": "string_value" }
}
pd.json_normalize(json_data, sep="_").to_csv("/path/to/result.csv", index=False)
PS json_data - должен быть словарем, соответственно если у вас данные хранятся как JSON строка или как JSON файл, то сначала необходимо спарсить JSON в словарь (dict).
пример:
In [118]: print(pd.json_normalize(data, sep="_").to_csv(index=False))
item1_props1,item1_props2_key1,item1_props2_key2,item1_props2_key3,item1_props3,item2_props1,item2_props2_key4,item2_props2_key5,item2_props2_key6,item2_props3
"[1, 2, 3, 4, 5, 6]",value1,value2,value3,string_value,"[1, 2, 3, 4, 5, 6]",value4,value5,value6,string_value