如何在低级列上合并多级列数据框

How to Merge Multilevel Column Dataframes on a Low Level Column

我有几个来自显示不同生物途径中基因的数据库的小数据集。我的最终目标是找出不同数据集中出现的基因。出于这个原因,我尝试从每个数据集制作多级数据框并将它们合并到一个列中。然而,它似乎无处可去。

测试样本:https://www.mediafire.com/file/bks9i9unfci0h1f/sample.rar/file

创建多级列:

import pandas as pd

df1 = pd.read_csv("Bacterial invasion of epithelial cells.csv")
df2 = pd.read_csv("C-type lectin receptor signaling pathway.csv")
df3 = pd.read_csv("Endocytosis.csv")

title1 = "Bacterial invasion of epithelial cells"
title2 = "C-type lectin receptor signaling pathway"
title3 = "Endocytosis"

final1 = pd.concat({title1: df1}, axis = 1)
final2 = pd.concat({title2: df2}, axis = 1)
final3 = pd.concat({title3: df3}, axis = 1)

我尝试使用 pandas.merge() 合并“用户 ID”列上的数据帧:

pd.merge(final1, final2, on = "User ID", how = "outer")

但是我得到一个错误。我不能使用 droplevel(),因为我需要在顶部显示标题。所以,我可以看到每个样本属于哪个数据集。 有什么建议吗?

既然你想看看哪些基因出现在不同的数据集中,听起来内连接可能更有用?将用户 ID 作为单行索引。

df1 = pd.read_csv("Bacterial invasion of epithelial cells.csv").set_index('User ID')
df2 = pd.read_csv("C-type lectin receptor signaling pathway.csv").set_index('User ID')
df3 = pd.read_csv("Endocytosis.csv").set_index('User ID')

final1 = pd.concat({"Bacterial invasion of epithelial cells": df1}, axis = 1)
final2 = pd.concat({"C-type lectin receptor signaling pathway": df2}, axis = 1)
final3 = pd.concat({"Endocytosis": df3}, axis = 1)

final1.merge(final3, left_index=True, right_index=True)#.merge(final2, left_index=True, right_index=True)

输出:

    Bacterial invasion of epithelial cells  Endocytosis
    Gene Symbol     Gene Name   Entrez Gene     Score   Gene Symbol     Gene Name   Entrez Gene     Score
User ID                                 
P51636  CAV2    caveolin 2  858     1.3911  CAV2    caveolin 2  858     1.3911
Q03135  CAV1    caveolin 1  857     1.5935  CAV1    caveolin 1  857     1.5935

(我用 final2 注释掉了第二个合并操作,因为它与其他两个之间没有任何重叠基因,但您可以根据需要对任意数量的数据集重复该过程。 )