使用 .map 和 defaultdict

Usage of .map with defaultdict

我有一个 pandas 数据框,我必须根据现有列的值填充新列,并关联字典的值。

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])

这当然是错误的。如何在不创建另一个普通字典的情况下执行此操作?

假设您的所有值每个列表至少有两个项目,在末尾添加一个 str[1]

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

或者,

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