Как извлечь значение словаря внутри списка в столбце Панды? - PullRequest
0 голосов
/ 23 января 2019
 Assigne(column name)
[{'id': 2342343, 'username': 'Raj', 'color': '#08c7e0', 'profilePicture': None}]
[{'id': 764665, 'username': 'mac', 'color': '#08c7e0', 'profilePicture': None}]

name = [d.get('username') for d in df.assigne]
print (name)

AttributeError: 'list' object has no attribute 'get'

Любые предложения будут полезны, спасибо.

1 Ответ

0 голосов
/ 23 января 2019

Вы получаете доступ к списку из цикла, для доступа к словарю используйте:

name = [d[0].get('username') for d in df.assigne]
print (name)

['Raj', 'mac']

РЕДАКТИРОВАТЬ 1: Если строка содержит пустой список, используйте:

name = [d[0].get('username') for d in df.assigne if d]

РЕДАКТИРОВАТЬ 2: Если в списке несколько словарей:

df = pd.DataFrame([[[{'id':2342343, 'username':'Raj', 'color':'#08c7e0', 'profilePicture':None}]],
                   [[{'id':764665, 'username':'mac', 'color':'#08c7e0', 'profilePicture':None}]],
                   [[{'id':2342343, 'username':'Raj', 'color':'#08c7e0', 'profilePicture':None}, 
                     {'id':2342343, 'username':'mac', 'color':'#08c7e0', 'profilePicture':None}]],
                   [[]],
                   [[{'id':2342343, 'username':'sand', 'color':'#08c7e0', 'profilePicture':None}]]], 
                  columns=['Assigne'])

name = [x.get('username')  for d in df.Assigne if d for x in d]

print(name)
['Raj', 'mac', 'Raj', 'mac', 'sand']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...