如何仅加入列“ 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
答案 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)