Изменение столбца вложенного списка в кадре данных в словарь?

1

Мой вопрос здесь двоякий:

У меня есть файл данных pandas, в котором один из столбцов представляет собой вложенный список в следующем виде:

[['linkedin', '...'], ['country', '...'], ['location', 'United Kingdom London London'], ['city', 'London'], ['state', 'London']...]

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

{'linkedin': '...', 'country': 'United Kingdom', 'location': 'United Kingdom London London', 'city': 'London', 'state': 'London'..}

Хотя это, по-видимому, вполне выполнимо при помощи typginging с использованием dict для отдельных записей. У меня возникают трудности с этим, чтобы сделать это для всех записей столбца. Например, я пробовал следующее, а также для циклов, но у меня возникают трудности:

df['graphResults']=df['graphResults'].astype(dict)

,

df['graphResults']=dict(df['graphResults'])

,

for(x in range(0,df.shape[0])):
    df.graphResults[x] = dict(df.graphResults[x])

Как это делается?

Во-вторых, после того, как я достиг этого, я хочу фактически взять некоторые из полей и добавить их в виде столбцов в своем собственном праве в области данных. Есть ли простой способ для этого?

  • 1
    df['graphResults'].apply(dict) ? Если вы хотите превратить в столбцы после того, как вы можете попробовать следующее: df.join(pd.DataFrame.from_records(df['graphResults'].apply(dict).values))
  • 1
    @ gyx-hh это правильный ответ
Теги:
pandas
dataframe
dictionary

4 ответа

1
Лучший ответ

перевод моего комментария в качестве ответа. Использование применяется к graphResults для преобразования в dict. Из этих значений вы можете создать новый DataFrame и присоединиться к оригинальному.

df.join(pd.DataFrame.from_records(df['graphResults'].apply(dict).values))

Чтобы выбрать только некоторые из полей, вы можете сделать следующее:

df.join(pd.DataFrame.from_records(df['graphResults'].apply(dict).values)[['country', 'location']])

Вышеуказанное добавит только поля location и country.

  • 1
    Спасибо, это было прекрасно на обоих фронтах!
  • 0
    Теперь у меня есть другой вопрос, для некоторых записей поля в словаре не всегда согласованы, что приводит к ошибкам во время присоединения. дающий: KeyError: "['city'] не в индексе" например. Есть ли способ, которым я могу обойти это, оставив любые случаи, когда это происходит как нулевые значения, а не весь процесс резки?
Показать ещё 3 комментария
0

Ну, словарная часть, которую я могу сделать:

data = [['linkedin', '...'], ['country', '...'],['location', 'United Kingdom London London'], ['city', 'London'], ['state', 'London']]
new_dict = {}
for combination in data:
    new_dict[combination[0]] = combination[1]
0

Я думаю, вам это нужно:

l = [['linkedin', '...'], ['country', '...'], ['location', 'United Kingdom London London'], \
     ['city', 'London'], ['state', 'London']]

dict_df  = {dict_df[0]:dict_df[1:] for dict_df in l}
0

Подобно:

l = [['linkedin', '...'], ['country', '...'], ['location', 'United Kingdom London London'], \
     ['city', 'London'], ['state', 'London']]

d = {i[0]:i[1:] for i in l}

?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню