Как мне проанализировать строку json в столбце csv и разбить ее на несколько столбцов? - PullRequest
0 голосов
/ 28 мая 2020

Моя цель состояла в том, чтобы прочитать строку json, расположенную в 4-м столбце «REQUEST_RE» файла csv, и разбить этот 4-й столбец на отдельные столбцы.

мои данные находятся в следующем формате для каждого csv строка в 4-м столбце:

Строка 2: {"Fruit": "Apple", "Cost": "1.5", "Attributes": {"ID": "001", "Country": "Америка"}}

Строка 3: {"Фрукты": "Апельсины", "Стоимость": "2,0", "Атрибуты": {"ID": "002", "Страна": "Китай "}}

необходимо заменить на:

enter image description here

Я пробовал это: Анализ строки JSON, был загружен из CSV с использованием Pandas

, и в итоге я использовал это:

InterimReport = pd.read_csv (filename, index_col = False, usecols = lambda col: col not in ["SYSTEMID"]) InterimReport.join (InterimReport ['REQUEST_RE']. apply (json .loads) .apply (pd.Series))

, но мне не удалось разделить мой json строка в столбцы.

моя json строка все еще оставалась строкой json и не была изменена.

1 Ответ

1 голос
/ 28 мая 2020

Вы должны загрузить CSV-файл, игнорируя строку JSON в это время.

Затем вы конвертируете столбец в список json и нормализуете его:

tmp = pd.json_normalize(InterimReport['REQUEST_RE'].apply(json.loads).tolist()).rename(
          columns=lambda x: x.replace('Attributes.', ''))

должно получиться что-то вроде:

    Fruit Cost   ID  Country
0   Apple  1.5  001  America
1  Orange  2.0  002    China

, которое вы можете легко объединить с исходным фреймом данных:

InterimReport = pd.concat([InterimReport.drop(columns=['REQUEST_RE']), tmp], axis=1)
...