python - 在 2 个数据框中执行合并

标签 python pandas dataframe

我有 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

  • 使用dictzip 构建映射字典
  • 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/

相关文章:

python 使用正则表达式创建新列

Python Pandas - 如何只为列的每个唯一值选择前 N 行

r - 如何使用列之一中的值对data.frame进行过滤/子集设置

python - 如果列为 NaN 并且另一行的列不是 NaN,如何删除 Dataframe 中的行

python - 从提供者列表中的单个结果中抓取数据

python - 识别包含 None 值的 pandas 列

python - 将 Pycharm virtualenv 与预先存在的文件一起使用

python - 如何更改 matplotlib 在绘制时间戳对象时使用的步长?

python - Pandas dataframe - 从字典中添加列

python - flask 属性错误 : module 'app' has no attribute 'run'