У меня есть датафрейм для панд:
id photos
001 [{'medium':'https:blablabla1',
'xl':'something1',
's':'anotherthing1'},
{'medium':'https:blablabla2',
'xl':'something2',
's':'anotherthing2'},
{'medium':'https:blablabla3',
'xl':'something3',
's':'anotherthing3'}]
002 [{'medium':'https:blablabla4',
'xl':'something4',
's':'anotherthing4'},
{'medium':'https:blablabla5',
'xl':'something5',
's':'anotherthing5'},
{'medium':'https:blablabla6',
'xl':'something6',
's':'anotherthing6'}]
003 [{'medium':'https:blablabla7',
'xl':'something7',
's':'anotherthing7'},
{'medium':'https:blablabla8',
'xl':'something8',
's':'anotherthing8'},
{'medium':'https:blablabla9',
'xl':'something9',
's':'anotherthing9'}]
Второй фото столбец содержит список словарей .То, что я хотел бы получить, является значением первой пары ключ: значение в списке.
Желаемый результат должен выглядеть следующим образом:
id image_url
001 https:blablabla1
002 https:blablabla4
003 https:blablabla7
Я понял, каксделайте это, если это один список диктов.Вот так:
dicts_list = [{'medium':'https:blablabla1',
'xl':'something1',
's':'anotherthing1'},
{'medium':'https:blablabla2',
'xl':'something2',
's':'anotherthing2'},
{'medium':'https:blablabla3',
'xl':'something3',
's':'anotherthing3'}]
# Access the first value of the first dict in a list
list(dicts_list[0].values())[0]
#output
'https:blablabla1'
Я до сих пор достиг этого (что явно неверно):
v = list()
for index, rows in df.iterrows():
photo = rows['photos']
v.append(photo[0])
# output
['[', '[']
Идея состоит в том, чтобы поместить первые значения в список, а затем добавить еговернуться к исходному кадру данных.Я не могу понять, как расширить его в фрейм данных панд.
ПРИМЕЧАНИЕ Основываясь на ответе @ daren-thomas, я понял, что словарь, на который я ссылаюсь в моих данных,строковое представление словаря.Чтобы преобразовать этот столбец в словарь, используйте следующий код:
import ast
df.photos = df.photos.apply(lambda x: ast.literal_eval(x))