Конвертировать Pandas Column, который состоит из списка JSON, в новые столбцы

Если вы сначала загрузите библиотеку MASS и второй dplyr one

library (MASS)
library (dplyr)

, тогда первая версия функции select в вашей сессии searchpaths () будет той, библиотеки dplyr.

Следовательно,

select(mtcars, mpg)

будет работать как

dplyr::select(mtcars, mpg)
1
задан sourav khanna 5 March 2019 в 10:39
поделиться

2 ответа

Сначала при необходимости преобразуйте значения в список словарей с помощью ast.literal_eval, затем используйте словарное понимание с конструктором DataFrame и concat и в последний раз используйте DataFrame.join для добавления оригинал:

import ast

#df['Details'] = df['Details'].apply(ast.literal_eval)

df1 = (pd.concat({k: pd.DataFrame(v) for k, v in df.pop('Details').items()})
         .reset_index(level=1, drop=True))

df = df.join(df1, rsuffix='_').reset_index(drop=True)
print (df)
  order_id user_id amount  id
0    5c7c9       A    160  p2
1    5c7c9       A    260  p3
2    5c5c4       B     10  p1
3    5c5c4       B    260  p3
0
ответ дан jezrael 5 March 2019 в 10:39
поделиться

Вы можете использовать:

s=pd.DataFrame([[x] + [z] for x, y in zip(df1.index,df1.Details) for z in y])
s=s.merge(df1,left_on=0,right_index=True).drop(['Details',0],1)
print(s.pop(1).apply(pd.Series).join(s))

  amount  id order_id user_id
0    160  p2    5c7c9       A
1    260  p3    5c7c9       A
2     10  p1    5c5c4       B
3    260  p3    5c5c4       B
0
ответ дан anky_91 5 March 2019 в 10:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: