Pandas: 在公共列上添加两个数据框

Pandas: Adding two dataframes on the common columns

我有 2 个表,它们具有相同的列,我想在键匹配的地方添加数字,如果不匹配,则按输出 df 中的原样添加它。我先尝试合并,合并, concat 和 join.. 他们都为 t1 和 t2 创建了 2 个单独的列,但它是相同的键,所以应该在一起我知道这将是非常基本的东西.. 有人可以帮忙吗?谢谢 vm!

 df1:
        t1  a         b
    0   USD 2,877   -2,418
    1   CNH 600     -593
    2   AUD 756     -106
    3   JPY 113     -173
    4   XAG 8          0

df2:
    t2  a        b
0   CNH 64      -44
1   USD 756     -774
2   JPY 1,127   -2,574
3   TWO 56      -58
4   TWD 38      -231

Output:
t   a          b
USD 3,634   -3,192
CNH 664     -637
AUD 756     -106
JPY 1,240   -2,747
XAG 8          0
TWO 56       -58
TWD 38      -231

第一个 set_index in both DataFrames by first columns and then use add 参数 fill_value=0:

print (df1.set_index('t1').add(df2.set_index('t2'), fill_value=0)
          .reset_index()
          .rename(columns={'index':'t'}))

     t       a       b
0  AUD   756.0  -106.0
1  CNH   664.0  -637.0
2  JPY  1240.0 -2747.0
3  TWD    38.0  -231.0
4  TWO    56.0   -58.0
5  USD  3633.0 -3192.0
6  XAG     8.0     0.0

如果需要将输出转换为int:

print (df1.set_index('t1').add(df2.set_index('t2'), fill_value=0)
          .astype(int) 
          .reset_index()
          .rename(columns={'index':'t'}))

     t     a     b
0  AUD   756  -106
1  CNH   664  -637
2  JPY  1240 -2747
3  TWD    38  -231
4  TWO    56   -58
5  USD  3633 -3192
6  XAG     8     0