#python #pandas #dataframe
#питон #панды #фрейм данных
Вопрос:
У меня есть фрейм данных в приведенном ниже формате. Я пытаюсь разбить это на разные строки для каждой пары ключ-значение.
id, data
101, [{'field': 'type1', 'newValue': '2020-01-16T12:35:50Z', 'oldValue': None},
{'field': 'status', 'newValue': 'Started', 'oldValue': None}]
Ожидаемый результат:
id, field, newValue, oldValue
101, type1, 2020-01-16T12:35:50Z, None
101, status, Started, None
Ответ №1:
Давайте explode
включим data
фрейм данных, затем создадим новый фрейм данных из разнесенного data
столбца и, наконец, используем join
:
out = df.explode('data').reset_index(drop=True)
out = out.join(pd.DataFrame(out.pop('data').tolist()))
print(out)
id field newValue oldValue
0 101 type1 2020-01-16T12:35:50Z None
1 101 status Started None
Ответ №2:
Ты можешь это сделать:
In [4432]: df = pd.DataFrame({'id':[101], 'data':[[{'field': 'type1', 'newValue': '2020-01-16T12:35:50Z', 'oldValue': None}, {'field': 'status', 'newValue': 'Started', 'oldValue': None}]]})
In [4438]: df1 = df.explode('data')['data'].apply(pd.Series)
In [4440]: df = pd.concat([df.id, df1], axis=1)
In [4441]: df
Out[4441]:
id field newValue oldValue
0 101 type1 2020-01-16T12:35:50Z None
0 101 status Started None