Преобразование столбца в словарь и доступ - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть следующий фрейм данных:

print(df.source)

                    source
0     "{'id': None, 'name': 'Cnet.com'}",
1     "{'id': None, 'name': 'Cnet.com'}",
2     "{'id': None, 'name': 'Cnet.com'}",

...

И я хотел бы получить доступ к информации, содержащейся в «имени», в конечном итоге создавая:

print(df_final.source)

                    source
0                  Cnet.com
1                  Cnet.com
2                  Cnet.com

...

Я пытался:

dictio = df["source"].to_dict()

for i in range(0, len(df)):

     dictio[i]["name"]

но возникает ошибка: «Ошибка типа: строковые индексы должны быть целыми числами».

Как я могу создать df_final?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

проблема в том, что ваши данные внутри исходного столбца имеют строковый формат.мы можем попробовать это, используя пакет json, чтобы преобразовать строку в формат словаря и затем получить доступ к полю имени из нее.

Я думаю, этот фрагмент должен работать.

import json
for index, row in df.iterrows():
    sourceDict = json.loads(row['source'])
    name = sourceDict['name']
0 голосов
/ 14 декабря 2018

Преобразование значений в словари по ast, а затем получение значений по get:

import ast

df['source'] = df['source'].apply(lambda x: ast.literal_eval(x).get("name", 'missing value'))

Или, если необходимо, работа со столбцом словаря позже:

import ast

df['source'] = df['source'].apply(ast.literal_eval)
df['source'] = df['source'].apply(lambda x: x.get("name", 'missing value'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...