2014-10-02 2 views
2

У меня есть панд dataframe, например:Новые панды dataframe столбцов, используя значения из словаря питона

colA  colB 
code1  num 
code2  num 
code3  num 
code4  num 
code5  num 

У меня также есть словарь питона, например:

py_dict = {'code1': [val1, val2, val3, val4, val5], 'code2': [val1, val2, val3, val4, val5], 'code3': [val1, val2, val3, val4, val5], 'code4': [val1, val2, val3, val4, val5], 'code5': [val1, val2, val3, val4, val5]} 

Что я хотел бы do - создать новый столбец в кадре данных pandas, вызвать его colC, который использует ключ из colA для соответствия соответствующему ключу/списку в py_dict и возвращает третье значение списка val3. Я экспериментировал с dataframe.from_dict() и dataframe.update(), но не уверен, как правильно индексировать словарь.

ответ

1

Сначала создайте новый Dict, содержащий только значение, которое вы хотите из каждого списка:

new_dict = {k: v[2] for k, v in py_dict.iteritems()} 

Затем вы можете использовать Series.map

df['new_col'] = df.colA.map(new_dict) 
+0

Любые предложения о возврате строковое значение для V [2] в этот пример? – acmyers

+0

@ user2920457: Что вы имеете в виду? Вопрос не говорит о том, какой тип 'val2'. Если это уже строка, нечего делать. Если вы хотите преобразовать 'v [2]' в строку, выполните 'str (v [2])' внутри понимания 'new_dict'. – BrenBarn

+0

Вы правы. Ошибка заключалась в использовании неправильного имени столбца df для map(), моего плохого. – acmyers

Смежные вопросы