我检查了所有其他答案,但找不到我要找的内容。
我有一个数据框 df1:
0 A B
1 a good
2 b bad
3 c fair
和数据框df2:
0 C D
1 a a
2 a b
3 b c
4 a d
我想要的结果是:
0 C B1 D B2
1 a good a good
2 a good b bad
3 b bad c fair
4 a good d ---
比如说,df1扮演了一个“字典”的角色,我需要提取A元素对应的B值。 注意,由于df1中没有定义元素d,因此df2中对应的值为“---”。
看起来很简单,但无法实现。 感谢您提供的所有提示。
最佳答案
使用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 ---
关于python - pandas:以特殊顺序合并两个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54304028/