两个 DataFrame 的复杂合并

L-s*_*are 4 python merge dataframe pandas

我有两个数据帧:

df1:

                     top1 top2 top3
693541495124446625    US   GB   CN
912819499544441670    US   CN   TW
Run Code Online (Sandbox Code Playgroud)

df2:

                         US   GB    CN    TW  \ ...
                                                                    
693541495124446625  939.00 932.00 806.00 789.00 ...
912819499544441670  992.00 646.00 981.00 796.00 ...
Run Code Online (Sandbox Code Playgroud)

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

                       top1          top2          top3
693541495124446625    'US 939.00'  'GB 932.00'   'CN 806.00'
912819499544441670    'US 992.00'  'CN 981.00'   'TW 796.00'
Run Code Online (Sandbox Code Playgroud)

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

ank*_*_91 5

你可以试试这个 df.replace

u = df2.astype(str).radd(df2.columns+' ')
out = df1.T.replace(u.T).T
Run Code Online (Sandbox Code Playgroud)

或者:

u = df2.astype(str).radd(df2.columns+' ')
df1.T.replace(u.to_dict('index')).T
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)