Pandas словарь внутри строки
У меня есть датафрейм, в котором в столбце 'source' содержатся данные такого типа: '{"source":"Referral","domain":"www.yyy.com"}', '{"utm_source":"board","source":"Referral","domain":"www.yyy.ru"}'
Мне нужно создать новый столбец, в котором будет значение ключа source и utm_source, т.е. Referral, board, etc.
Пробовала так: Вариант 1
list_values = []
for value in new_wordpress['source'].values:
list_values.append(value['source'])
Output: invalid index to scalar variable
вариант 2:
new_wordpress["new"] = (new_wordpress["source"] .apply(lambda x: x.get("source") if isinstance(x, dict) else np.nan))
Output: array([nan])
Ответы (1 шт):
Автор решения: SergFSM
→ Ссылка
попробуйте так:
df=pd.DataFrame({'source':['{"source":"Referral","domain":"www.yyy.com"}', '{"utm_source":"board","source":"Referral","domain":"www.yyy.ru"}']})
df
source
0 {"source":"Referral","domain":"www.yyy.com"}
1 {"utm_source":"board","source":"Referral","dom...
df['source'].apply(lambda x: eval(x)).apply(lambda x: pd.Series({'new_sourse': x.get('source'), 'utm_source': x.get('utm_source')}))
new_sourse utm_source
0 Referral None
1 Referral board