Извлечение n значений из вложенного JSON в столбце TSV

#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