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
→ Ссылка