【发布时间】:2018-11-01 15:57:31
【问题描述】:
我有两个需要使用 Pandas 合并的 .xlsx 文件。数据帧的格式如下: 数据框 1:
+-------+-------+-------+-------+-------+
| Index | Col_A | Col_B | Col_C | Col_Q |
+-------+-------+-------+-------+-------+
| 1 | A1 | B1 | C1 | Q1 |
| 2 | A2 | B2 | C2 | Q2 |
| 3 | A3 | B3 | C3 | Q3 |
| ... | ... | ... | ... | ... |
| 100 | A100 | B100 | C100 | Q100 |
+-------+-------+-------+-------+-------+
数据框 2:
+-------+--------+--------+--------+
| Index | Col_X | Col_Y | Col_Z |
+-------+--------+--------+--------+
| 1 | XData1 | YData1 | Part 1 |
| 2 | XData2 | YData2 | Part 2 |
| 3 | XData3 | YData3 | Part 3 |
| ... | ... | ... | ... |
| N | XDataN | YDataN | Part N |
+-------+--------+--------+--------+
数据帧 2 中的 Col_Z 是唯一的部件号,N 是小于 100 的值。此部件号将与 DF1 的 Col_A、Col_B 或 Col_C 中的一个且仅一个值匹配。如果零件编号与其中一个值匹配,我想将数据框 2 的该行中的所有数据合并到数据框 1 的右侧。最终表格应如下所示: 数据框 3:
+-------+-------+-------+-------+-------+-------+--------+--------+--------+
| Index | Col_A | Col_B | Col_C | Col_Q | Index | Col_A | Col_B | Col_Z |
+-------+-------+-------+-------+-------+-------+--------+--------+--------+
| 1 | A1 | B1 | C1 | Q1 | X | XDataX | YDataX | Part X |
| 2 | A2 | B2 | C2 | Q2 | Y | XDataY | YDataY | Part Y |
| 3 | A3 | B3 | C3 | Q3 | Z | XDataZ | YDataZ | Part Z |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 100 | A100 | B100 | C100 | Q100 | N | XDataN | YDataN | Part N |
+-------+-------+-------+-------+-------+-------+--------+--------+--------+
我想保留 DF1 和 DF2 的索引将重新排列,以便 Col_Z 与 Col_A、Col_B 或 Col_C 匹配。 我尝试的是三个单独的合并命令,其中 left_on 分别是 Col_A、Col_B 和 Col_C。在所有三种情况下,属性 right_on 都是 Col_Z。这将为 Col_A、Col_B 和 Col_C 与部件号匹配的实例提供三个新数据帧。当我尝试合并这些数据框以创建包含所有信息的最终数据框时,我遇到了诸如数据向右移动之类的问题。关于解决方案的任何想法?
【问题讨论】:
标签: python excel pandas merge xlsx