首页 > 解决方案 > 熊猫:在下一行条件下加入数据框

问题描述

我有一个熊猫数据框 df1,它按照时间顺序排列,其中“id”是唯一的:

df1 = pd.DataFrame([[0, 17], [1, 5], [2, 11], [3, 15], [4, 10]], columns = ['seq', 'id'])

seq    id
  0    17
  1     5
  2    11
  3    15
  4    10

我需要加入来自另一个数据框 df2 的数据,其中“id”可以在“id_1”列中出现多次,但 id1-id2 组合是唯一的:

df2 = pd.DataFrame([[17, 7, 'a'], [17, 5, 'b'], [17, 8, 'c'], [5, 4, 'd'], [5, 11, 'e'], [11, 9, 'f'], [11, 15, 'g'], [15, 21, 'h'], [15, 10, 'i']], columns = ['id_1', 'id_2', 'x1'])

id_1   id_2    x1
  17      7     a
  17      5     b
  17      8     c
   5      4     d
   5     11     e
  11      9     f
  11     15     g
  15     21     h
  15     10     i

加入 df1 的结果应该基于下一行。例如,对于 seq=0 的第一行,仅当 seq=1 的下一行的 id_1 = id & id_2 = id 时,才必须连接来自 df2 的数据。最终的结果,应该是这样的:

seq    id    x1
  0    17     b
  1     5     e
  2    11     g
  3    15     i
  4    10

知道如何实现吗?

标签: pandas

解决方案


推荐阅读