Я хочу превратить эту строку в список словарей в ней:
”[{‘id’: ‘x’, ‘name’: ‘y’}, {‘id’: ‘p’, ‘name’: ‘q’}]”
У меня есть несколько столбцов в кадре данных pandas, состоящем из строк, похожих на этот. Некоторые из них только ”[]”
или ”[{‘id’: ‘x’, ‘name’: ‘y’}]”
, а другие содержат много строковых словарей.
Я пробовал
import json
z = ”[{‘id’: ‘x’, ‘name’: ‘y’}, {‘id’: ‘p’, ‘name’: ‘q’}]”
list(json.loads(z[1:-1]))
И это отлично работает, когда есть только один строковый словарь (”[{‘id’: ‘x’, ‘name’: ‘y’}]”
) но поскольку словари имеют общие ключи, их нельзя просто jsonified.
Как только это будет сделано, я извлечу значение из name
каждого и создам список из них.
ОТВЕТИЛ Спасибо @ Tenacious B
Чтобы превратить строку в список dicts:
import json
z = ”[{‘id’: ‘x’, ‘name’: ‘y’}, {‘id’: ‘p’, ‘name’: ‘q’}]”
data = json.loads(z.replace("'", ""))]) # this will be a list of dicts
Вывод:
[{'id': 'x', 'name': 'y'}, {'id': 'p', 'name': 'q'}]
И для применения к pandas кадру данных, имеющему столбец с записями, как указано выше, с получением только значения из желаемого ключа:
import json
df['col'] = df['col'].apply(lambda x: [i['name'] for i in json.loads(x.replace("'", ""))])