我有 2 个数据框如下:
Dataframe1:
i j
3 4
5 6
7 2
Dataframe2:
k n
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
我如何合并这两个数据帧,使得第一个数据帧上的关键元素是 i 和 j,第二个数据帧上的关键元素是 k,结果是:
Dataframe1:
i j ni nj
3 4 c d
5 6 e f
7 2 g b
最佳答案
选项 1
- 使用
dict
和zip
构建映射字典 - 将
applymap
与字典的get
方法结合使用 - 使用
add_prefix
获取前面的'n'
- 使用
join
合并
m = dict(zip(d2.k.values, d2.n.values))
d1.join(d1.applymap(m.get).add_prefix('n'))
i j ni nj
0 3 4 c d
1 5 6 e f
2 7 2 g b
等效1行
d1.join(d1.applymap(dict(zip(d2.k.values, d2.n.values)).get).add_prefix('n'))
i j ni nj
0 3 4 c d
1 5 6 e f
2 7 2 g b
选项 2
与选项 1 相同,除了我们可以使用 stack
/unstack
习惯用法和 map
m = dict(zip(d2.k.values, d2.n.values))
d1.join(d1.stack().map(m).unstack().add_prefix('n'))
i j ni nj
0 3 4 c d
1 5 6 e f
2 7 2 g b
关于python - 在 2 个数据框中执行合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43619061/