pandas-使用字典映射dataframe元素-如何访问值列表的第n个元素
假设我有一个名为df的数据帧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
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_很高兴我能帮忙!请考虑将答案标记为已接受。