Python Pandas:当字典中有多个键时,通过映射将列添加到
这是我的问题,我想在一个数据帧中映射一个字典,但是当字典有几个键时,我找不到一种方法来映射。请注意,这些键存在于数据帧的不同列中 以下是一个例子: 这是我开始时的数据帧,df: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
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