Считать данные из словаря из ячейки Pandas таблицы / фрейма

В таблице есть несколько полей, одно из них может содержать данные, типа словарь. Как пример: {"source":"ppc","domain":"domain.ru"}, а может и просто строку, например "data". Нужно в новое поле вывести значение поля "source", т.е. "ppc". '.str' выдает null, можно как-то вытащить данные?


Ответы (1 шт):

Автор решения: MaxU

Пример данных:

In [45]: df = pd.DataFrame({"a":[ {"source":"ppc","domain":"domain.ru"}, "data", np.nan]})

In [46]: df
Out[46]:
                                          a
0  {'source': 'ppc', 'domain': 'domain.ru'}
1                                      data
2                                       NaN

решение:

df["source"] = \
    df["a"].map(lambda x: x.get("source", np.nan) 
                          if isinstance(x, dict) else np.nan)

результат:

In [48]: df
Out[48]:
                                          a source
0  {'source': 'ppc', 'domain': 'domain.ru'}    ppc
1                                      data    NaN
2                                       NaN    NaN
→ Ссылка