如何只合并右框架的选定列?

时间:2018-08-02 03:19:27

标签: python pandas merge

如何仅加入列“ d”?并避免同时加入“ c”。这是故意的,键列的名称不同(相应地,“ a”和“ c”)。

t1

    a   b
0   5   2
1   3   4
2   1   6

t2

    c   d
0   1   20
1   3   40
2   5   60

结果

**t1.merge(t2, left_on='a', right_on='c')**
    a   b   c   d
0   5   2   5   60
1   3   4   3   40
2   1   6   1   20

期望的结果是:

    a   b   d
0   5   2   60
1   3   4   40
2   1   6   20

2 个答案:

答案 0 :(得分:2)

如果只想将 d 列添加到第一个数据框,则只需合并 d

pd.concat([t1, t2.d], 1)

   a  b   d
0  5  2  20
1  3  4  40
2  1  6  60

或使用 join

t1.join(t2.d)

   a  b   d
0  5  2  20
1  3  4  40
2  1  6  60

如果您要添加第二个DataFrame中的列的子集,请添加:

t1.join(t2[cols])

或者:

pd.concat([t1, t2[cols]])

答案 1 :(得分:1)

如果要防止重复标记不同的键,可以在合并中重命名它们:

t1.merge(t2.rename(columns={'c': 'a'}), on='a')
   a  b   d
0  5  2  60
1  3  4  40
2  1  6  20

或者,如果只带一个没有重复键的列,则总是可以map

t1['d'] = t1.a.map(t2.set_index('c').d)