Мой вопрос здесь двоякий:
У меня есть файл данных 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])
Как это делается?
Во-вторых, после того, как я достиг этого, я хочу фактически взять некоторые из полей и добавить их в виде столбцов в своем собственном праве в области данных. Есть ли простой способ для этого?
перевод моего комментария в качестве ответа. Использование применяется к 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
.
Ну, словарная часть, которую я могу сделать:
data = [['linkedin', '...'], ['country', '...'],['location', 'United Kingdom London London'], ['city', 'London'], ['state', 'London']]
new_dict = {}
for combination in data:
new_dict[combination[0]] = combination[1]
Я думаю, вам это нужно:
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}
Подобно:
l = [['linkedin', '...'], ['country', '...'], ['location', 'United Kingdom London London'], \
['city', 'London'], ['state', 'London']]
d = {i[0]:i[1:] for i in l}
?
df['graphResults'].apply(dict)
? Если вы хотите превратить в столбцы после того, как вы можете попробовать следующее:df.join(pd.DataFrame.from_records(df['graphResults'].apply(dict).values))