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



我有几个来自数据库的小数据集,显示不同生物途径中的基因。我的最终目标是找出不同数据集中显示的基因是什么。出于这个原因,我尝试从每个数据集制作多级数据帧,并将它们合并到一列上。然而,它看起来毫无进展。

测试样品: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的第二次合并操作,因为它和其他两个之间没有任何重叠的基因,但你可以用你喜欢的数据集重复这个过程。(

最新更新