#python #json #pandas
Вопрос:
Учитывая это:
кошка | размер | cat_json |
---|---|---|
пушистый | Средний | { «кошки»: { «Разнообразие кошек»: [«ситец»], «возраст»: [], «цвета»: [«оранжевый», «черный», «белый»] } } |
Мне нужно следующее:
кошка | размер | Разнообразие | возраст | Цвет |
---|---|---|---|---|
пушистый | Средний | ситец | нулевой | оранжевый черный белый |
Предположим, у меня есть тысячи таких строк. Как я могу использовать python для визуализации этого без какой-либо предварительной обработки? Есть много других способов сделать это, но мне нужно использовать python, и я не смог понять, как проанализировать JSON для всего столбца.
Комментарии:
1.
cat_json
это строка или диктант?
Ответ №1:
Я не уверен, что json_normalize или другие встроенные анализаторы будут работать из-за того, как вы хотите, чтобы списки были разбиты. Это предполагает, что в качестве каждого значения всегда будет список, и три ключа всегда будут там. В противном случае вам просто нужно больше логики в функции.
data='''cat size cat_json
fluffy medium { "cats": { "catVariety": ["calico"], "age": [], "colors": ["orange", "black", "white"] } }'''
df = pd.read_csv(io.StringIO(data), sep=' s ', engine='python')
df
def parsejson(x):
x['catVariety'] = ' '.join(json.loads(x['cat_json'])['cats']['catVariety'])
x['age'] = ' '.join(json.loads(x['cat_json'])['cats']['age'])
x['color'] = ' '.join(json.loads(x['cat_json'])['cats']['colors'])
return x
df.apply(parsejson, axis=1)
cat size cat_json catVariety age color
0 fluffy medium { "cats": { "catVariety": ["calico"], "age": [... calico orange black white