Я столкнулся со странной проблемой с API, к которому обращаюсь. Я получаю свои данные в формате JSON со строкой, содержащей JSON внутри. Вместо того, чтобы быть вложенным, по какой-то причине оно выглядит как строковое поле внутри JSON. Я дошел до того, что могу изменить этот исходный JSON на фрейм данных Pandas, который можно увидеть ниже, но мне нужно в конечном итоге поместить его в таблицу в базе данных SQL, но JSON, с которым я работаю, значительно длиннее, чем образец, с которым я работаю здесь, и в результате JSON обрезается из-за максимального размера varchar, с которым я могу работать в SQL.
По сути, есть ли у меня какой-либо способ работать с этим фреймом данных в Python, чтобы преобразовать JSON в дополнительные столбцы и строки в фрейме данных?
Это Dataframe, с которым я сейчас работаю:
Я пытаюсь, чтобы мой Dataframe выглядел так
Любая помощь приветствуется
Если значения в столбце 'json'
являются строками, сначала преобразуйте их в JSON с помощью json.loads
.
Затем вы можете explode
преобразовать значения в новые столбцы для каждого объекта JSON и использовать json_normalize
для преобразования их в фреймы данных.
Наконец, concat
(на axis=1
) исходный фрейм данных минус столбец 'json'
+ вновь созданный фрейм данных.
df["json"] = df["json"].apply(json.loads)
df = df.explode("json").reset_index(drop=True)
out = pd.concat([df.drop(columns = "json"), pd.json_normalize(df["json"])], axis=1)
Department Value employeeID name badgeNo
0 1 A 123.0 Jenny NaN
1 1 A 456.0 Mike NaN
2 1 A 789.0 Ricky NaN
3 2 B 735.0 Todd 84639.0
4 2 B 223.0 Greg 93649.0
5 3 C NaN NaN NaN
6 4 D 947.0 Cardi NaN
7 4 D 284.0 Tom NaN
это работает очень хорошо, спасибо! Я отметил это как ответ. У меня есть несвязанный вопрос относительно json, по какой-то причине я использую «вместо», но я считаю, что этот вопрос уже был задан и на него уже дан ответ, и я могу объединить это решение с этим кодом, чтобы полностью решить мою проблему. Еще раз спасибо!