Использование.map с defaultdict

У меня есть pandas dataframe, и я должен заполнить новый столбец на основе значений существующего столбца, связывая значения словаря.

mydict={'key1':'val1', 'key2':'val2'}
df['new_col']=df['keys'].map(mydict)

Сейчас у меня похожая проблема, но словарь теперь defaultdict(list)

my_defdict=defaultdict(list)
my_defdict={'key1':['val1','item1'], 'key2':['val2','item2']}

и мне нужен новый столбец со вторым элементом списка, что-то вроде

df['new_col2']=df['keys'].map(my_defdict()[1])

что, конечно, неправильно. Как я могу выполнить эту операцию без создания другого нормального словаря?

1 ответ

Решение

Предполагая, что все ваши значения имеют как минимум два элемента в списке, добавьте str[1] в конце:

df['new_col2'] = df['keys'].map(my_defdict).str[1]

Или же,

df['new_col2'] = df['keys'].map(my_defdict).str.get(1)
Другие вопросы по тегам