两个DataFrame的复杂合并

我有两个数据帧:

df1:

                     top1 top2 top3
693541495124446625    US   GB   CN
912819499544441670    US   CN   TW

df2:

                         US   GB    CN    TW   ...
                                                                    
693541495124446625  939.00 932.00 806.00 789.00 ...
912819499544441670  992.00 646.00 981.00 796.00 ...

如何合并或迭代两个数据帧以获得以下结果:

                       top1          top2          top3
693541495124446625    'US 939.00'  'GB 932.00'   'CN 806.00'
912819499544441670    'US 992.00'  'CN 981.00'   'TW 796.00'

我知道我可以迭代取 df1 值并[loc]通过几个 for 循环将该值作为列放在 df2 中,但是有没有优化的解决方案?

回答

你可以试试这个 df.replace

u = df2.astype(str).radd(df2.columns+' ')
out = df1.T.replace(u.T).T

或者:

u = df2.astype(str).radd(df2.columns+' ')
df1.T.replace(u.to_dict('index')).T

print(out)
                        top1      top2      top3
693541495124446625  US 939.0  GB 932.0  CN 806.0
912819499544441670  US 992.0  CN 981.0  TW 796.0


以上是两个DataFrame的复杂合并的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>