繁体   English   中英

熊猫:以特殊顺序合并两个数据框

[英]pandas: merge two data frames in a special order

我已经检查了所有其他答案,我找不到我要找的东西。

我有一个数据框 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 的相应值。 请注意,由于元素 d 未在 df1 中定义,因此对应的值在 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      ---

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM