【发布时间】:2021-12-22 12:58:39
【问题描述】:
我有两个数据框 DF1
| colA | colB | colC | colD |
|---|
DF2
| colA | colB | colE | colF |
|---|
两个数据框中的前两列由相同的数量组成,但存在一些差异。 在 DF2 colA 中,假设 M 个数字,每个 M 个数字都可以具有 N 个属性,因此 colB 捕获了这些属性。实际上,DF2 中的行数是 M*N。我还必须提到 colE 和 colF 对于每个 MN 组合都是唯一的。
IN DF1 colA 有 M 个不同的可能值,但 M 个值中的每一个可能重复不同的次数 所以如果 M 贯穿 m1---mM 那么可能性的总数可以是 k1*m1 + k2*m2 + K3*m3 等等。 k_{i} 是整数。 在 colB 中,对于每个重复的 M 个不同值,可以有不同或相同的 N 值。但是,与 DF1 中的 DF2 不同,相同的 M 和 N 值可以重复(行的唯一性由 DF1 中的其他列保证)。
当我使用以下合并命令在 Pandas 中加入这两个表时,我得到了额外的行(在加入中),我想知道如何避免?
pd.merge(DF1, DF2, on=['colA', 'colB'])
我想知道是否有人可以使用 pandas 提出答案,这可能比我尝试制作 DF1 中存在的 MN 组合的字典然后从 DF2 中选择列然后粘贴回 DF1 更快。
DF1
| colA | colB | colC | colD |
|---|---|---|---|
| 1 | A | -10 | -20 |
| 1 | B | -33 | -44 |
| 1 | A | -22 | -11 |
| 2 | B | 33 | 44 |
DF2
| colA | colB | colE | colF |
|---|---|---|---|
| 1 | A | 123 | 456 |
| 2 | B | -1 | -2 |
| 1 | A | -4 | -5 |
| 2 | B | -7 | -8 |
我需要的合并
| colA | colB | colC | colD | colE | colF |
|---|---|---|---|---|---|
| 1 | A | -10 | -20 | 123 | 456 |
| 1 | B | -33 | -44 | -1 | -2 |
| 1 | A | -22 | -11 | 123 | 456 |
| 2 | B | 33 | 44 | -7 | -8 |
感谢您抽出宝贵时间阅读。
【问题讨论】: