pandas-使用字典映射dataframe元素-如何访问值列表的第n个元素

pandas-使用字典映射dataframe元素-如何访问值列表的第n个元素,pandas,dataframe,dictionary,Pandas,Dataframe,Dictionary,假设我有一个名为df的数据帧 d = {'country_code':['SP','FR','US']} df = pd.DataFrame(data = d) 除此之外,我还有下面的字典。请注意,每个键都有一个值列表,而不是一个值 dictionary = {'SP': ['Spain','Europe'],'IT':['Italy','Europe']} 我知道我可以使用map函数映射数据框中的字典值: df['zone'] = df['country_code'].map(dicti

假设我有一个名为df的数据帧

d = {'country_code':['SP','FR','US']}

df = pd.DataFrame(data = d)
除此之外,我还有下面的字典。请注意,每个键都有一个值列表,而不是一个值

dictionary = {'SP': ['Spain','Europe'],'IT':['Italy','Europe']}
我知道我可以使用map函数映射数据框中的字典值:

df['zone'] = df['country_code'].map(dictionary)
但是,我只想映射值列表的第二个元素,而不是完整的列表。所以对于数据框中的'SP',我应该得到'Europe',而不是['Spain','Europe]。我以为这些联会是

df['zone'] = df['country_code'].map(dictionary)[1]
但事实并非如此

有人能帮忙吗

关于

将访问者用于黑客解决方案:

df['zone'] = df['country_code'].map(dictionary).str[1]
print(df)
输出

  country_code    zone
0           SP  Europe
1           FR     NaN
2           US     NaN
  country_code    zone
0           SP  Europe
1           FR     NaN
2           US     NaN
一个更干净的替代方法是从现有词典创建一个新词典:

df['zone'] = df['country_code'].map({k : vs[1] for k, vs in dictionary.items()})
print(df)
输出

  country_code    zone
0           SP  Europe
1           FR     NaN
2           US     NaN
  country_code    zone
0           SP  Europe
1           FR     NaN
2           US     NaN

完美的Thanks@jw_很高兴我能帮忙!请考虑将答案标记为已接受。