我已经检查了所有其他答案,找不到我想要的东西。
我有一个数据帧df1:
0 C D
1 a a
2 a b
3 b c
4 a d
和数据帧df2:
0 C B1 D B2
1 a good a good
2 a good b bad
3 b bad c fair
4 a good d ---
我希望结果是:
.page {
margin: -44 0 44 0;
}
说,df1扮演“字典”的角色,我需要为A元素提取B的对应值。 请注意,由于在df1中未定义元素d,因此在df2中相应的值为'---'。
似乎很简单,但无法正常工作。 感谢所有提示。
答案 0 :(得分:2)
使用s.map()
d=dict(zip(df1.A,df1.B))
df2['B1']=df2.C.map(d).fillna('---')
df2['B2']=df2.D.map(d).fillna('---')
df2=df2[['C','B1','D','B2']]
print(df2)
C B1 D B2
0 a good a good
1 a good b bad
2 b bad c fair
3 a good d ---
如果df2中有更多列,则用于创建动态映射:
my_list=[]
for i in df2.columns:
my_list.append(df2[i].map(d).fillna('---'))
df_new=df2.join(pd.concat(my_list,axis=1),lsuffix='',rsuffix='_mapped')
print(df_new)
C D C_mapped D_mapped
0 a a good good
1 a b good bad
2 b c bad fair
3 a d good ---