#json #python-3.x #pandas #dataframe
#json #python-3.x #pandas #фрейм данных
Вопрос:
Я загрузил и нормализовал данные json как:
json_string = json.loads(data)
df_norm = json_normalize(json_string, errors='ignore')
Допустим, теперь в нем 2 столбца:
Group Members
A [{'id':'1', 'metrics': '34', 'profile': 'abc'},{'id':'3',
'metrics': '32', 'profile': 'dc'}]
B [{'id':'2', 'metrics': '4', 'profile': 'bac'}]
Я ищу метод разделения столбца «Члены» и объединения его обратно в исходный фрейм данных в рамках той же «Группы», например:
Group Members id metrics profile
A {'id':'1', 'metrics': '34', 'profile': 'abc'},{'id':'3', 'metrics': '32', 'profile': 'dc'}] 1 34 abc
A {'id':'1', 'metrics': '34', 'profile': 'abc'},{'id':'3', 'metrics': '32', 'profile': 'dc'}] 3 32 dc
B [{'id':'2', 'metrics': '4', 'profile': 'bac'}] 4 4 bac
Любая помощь была бы высоко оценена.
Комментарии:
1. Можете ли вы добавить образец json к вопросу?
2. Да, пожалуйста, поделитесь
data
Ответ №1:
Использование:
import ast
#if necessary convert column to list of dicts
df['Members'] = df['Members'].apply(ast.literal_eval)
#create DataFrames in list comprehension
df1 = pd.concat({k:pd.DataFrame(v) for k, v in df['Members'].items()})
#join to original
df = df.join(df1.reset_index(level=1, drop=True)).reset_index(drop=True)
print (df)
Group Members id metrics profile
0 A [{'id': '1', 'metrics': '34', 'profile': 'abc'... 1 34 abc
1 A [{'id': '1', 'metrics': '34', 'profile': 'abc'... 3 32 dc
2 B [{'id': '2', 'metrics': '4', 'profile': 'bac'}] 2 4 bac
Комментарии:
1. Есть предложения, как избежать приведенной ниже ошибки «Ошибка значения: неверно сформированный узел или строка: {‘pkt_in’: ‘2502’, ‘lport’: ‘32872’, »
2. Я также получаю ту же ошибку