Python Pandas:当字典中有多个键时,通过映射将列添加到

Python Pandas:当字典中有多个键时,通过映射将列添加到,python,pandas,dictionary,dataframe,mapping,Python,Pandas,Dictionary,Dataframe,Mapping,这是我的问题,我想在一个数据帧中映射一个字典,但是当字典有几个键时,我找不到一种方法来映射。请注意,这些键存在于数据帧的不同列中 以下是一个例子: 这是我开始时的数据帧,df: Index key 0 10 k1 1 12 k2 2 3 k1 3 34 k3 这是我的字典,d: {('k1', 10):v1,('k

这是我的问题,我想在一个数据帧中映射一个字典,但是当字典有几个键时,我找不到一种方法来映射。请注意,这些键存在于数据帧的不同列中

以下是一个例子:

这是我开始时的数据帧,df:

        Index      key 
0          10       k1       
1          12       k2   
2           3       k1    
3          34       k3  
这是我的字典,d:

{('k1', 10):v1,('k1', 3):v2,('k2', 12):v3,('k3', 34):v4}
我想在最后,df:

        Index      key    value
0          10       k1       v1    
1          12       k2       v2
2           3       k1       v3
3          34       k3       v4
有没有一种方法可以做到这一点,就像你有一本单键词典时可以做到的那样:

df[“值”]=df[“键”].映射(d)


提前感谢。

使用列表理解和
get
返回
None
无匹配值:

df['value'] = [d.get(x) for x in zip(df['key'], df['Index'])]
print (df)
   Index key value
0     10  k1    v1
1     12  k2    v3
2      3  k1    v2
3     34  k3    v4


IIUC使用
merge

mergedf=pd.Series(d).reset_index()
mergedf.columns=['key','Index','values']
df.merge(mergedf,how='left')
Out[642]: 
   Index key values
0     10  k1     v1
1     12  k2     v3
2      3  k1     v2
3     34  k3     v4
mergedf=pd.Series(d).reset_index()
mergedf.columns=['key','Index','values']
df.merge(mergedf,how='left')
Out[642]: 
   Index key values
0     10  k1     v1
1     12  k2     v3
2      3  k1     v2
3     34  k3     v4