Pandas数据帧Cross-Reference/SelectiveJoin/Overlay?

Pandas DataFrame Cross-Reference/Selective Join/Overlay?

在两个 Pandas 数据帧之间进行选择性 lookup/cross-reference/overlay/partial 连接的 best/fastest 方法是什么?我不确定使用正确的术语....

鉴于:

  1. 一个主要的 table 填充了数值和一些任意的 lookup/reference 字符串,由 date/month
  2. 索引
  3. 次要 table,索引与第一个一致。此数据框的列与主 table 中的任意 lookup/reference 字符串匹配,可以随时间变化,并用作查找列以替换主 table.[=54= 中的值]

两个 table 的索引不一定需要完全相同的集合(甚至是连续的),但如果在 Table 中存在查找1 显然需要在 Table 2.

中对应一行

即我想在 Table 1 中找到每个 lookup/placeholder 并用 Table 2[= 中的正确查找值替换57=] 来自正确的月份。

示例如下:

Table 1

dte value1 value2
2022-01 1 2
2022-02 3 LOOKUP1
2022-03 LOOKUP3 4
2022-04 5 6

Table 2

dte LOOKUP1 LOOKUP2 LOOKUP3
2021-12 101 105 109
2022-02 102 106 110
2022-03 103 107 111
2022-10 104 108 112

结果

dte value1 value2
2022-01 1 2
2022-02 3 102
2022-03 111 4
2022-04 5 6

我需要在我的用例中做很多这样的事情,所以我希望至少能相当快地完成一些事情。我不是 Pandas 方面的专家,想知道是否有聪明的方法可以做到这一点。我可以遍历 Table 1 中的每个 row/column,查找与 Table 2[=57 中的列名匹配的值=] 然后在 Table 2 中查找并替换 Table 1 中的值。在 Pandas 中似乎经常有一种聪明的方法来做这种事情,它会自动为你并行化。任何帮助将不胜感激!

一种简单的方法是使用 replace ,速度不确定

out = tb1.set_index('dte').T.replace(tb2.set_index('dte').T).T
Out[172]: 
        value1 value2
dte                  
2022-01      1      2
2022-02      3    102
2022-03    111      4
2022-04      5      6