【发布时间】:2022-01-02 14:20:59
【问题描述】:
我有两个如下所示的数据框:
网络1
| Gene_A | Gene_B | abs_dif | log2FC | omic | |
|---|---|---|---|---|---|
| 0 | RBL2 | ATOH7 | 0.277574 | 0.634319 | trans |
| 1 | RBL2 | USF2 | 0.276369 | 0.567421 | trans |
| 2 | RBL2 | RASA3 | 0.166101 | 0.474418 | trans |
网络2
| Gene_A | Gene_B | abs_dif | log2FC | omic | |
|---|---|---|---|---|---|
| 0 | ATOH7 | RBL2 | 0.277574 | 0.634319 | meth |
| 1 | RBL2 | USF2 | 0.276369 | 0.567421 | meth |
| 2 | RBL2 | Fernando | 0.166101 | 0.474418 | meth |
每一行代表一种关系。我正在尝试基于“Gene_A”和“Gene_B”列合并两个熊猫数据框,同时保持常见和不常见的关系。我正在使用:
merged = pd.merge(net1, net2, how='outer', on=["Gene_A", "Gene_B"], indicator=True)
返回:
| Gene_A | Gene_B | abs_dif_x | log2FC_x | omic_x | abs_dif_y | log2FC_y | omic_y | _merge | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | RBL2 | ATOH7 | 0.277574 | 0.634319 | trans | nan | nan | nan | left_only |
| 1 | RBL2 | USF2 | 0.276369 | 0.567421 | trans | 0.276369 | 0.567421 | meth | both |
| 2 | ATOH7 | RBL2 | nan | nan | nan | 0.277574 | 0.634319 | meth | right_only |
| 3 | RBL2 | Fernando | nan | nan | nan | 0.166101 | 0.474418 | meth | right_only |
但是,两个表中0的关系基本相同,所以在合并时不应该考虑Gene_A和Gene_B的顺序。因此,合并数据框中的第一行应该是:
| Gene_A | Gene_B | abs_dif_x | log2FC_x | omic_x | abs_dif_y | log2FC_y | omic_y | _merge | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | RBL2 | ATOH7 | 0.277574 | 0.634319 | trans | 0.277574 | 0.634319 | meth | both |
如何在不考虑合并数据框的两列中元素的顺序的情况下合并数据框?
【问题讨论】:
-
接受并支持您认为有助于保持社区积极性的解决方案
标签: python pandas merge multiple-columns