使用pandas DataFrame比较两个文件\u csv以找出差异,并将F2连接到F1中

2024-09-26 22:53:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要帮助来解决这个问题。如果有人想用panda DataFrame和python3创建一个脚本:

我有两个CSV数据集文件太长,无法放入panda数据框显示。它们具有以下结构:

F1: 
   gene disease
0  g1   d1
1  g1   d2
2  g1   d3
3  g2   d2
4  g2   d3
5  g2   d4
6  g3   d2
7  g3   d4
8  g4   d1
9  g4   d3

F2:
  gene  phenotype
0  g1   ph1
1  g1   ph2
2  g2   ph2
3  g2   ph3
4  g2   ph4
5  g3   ph4
6  g4   ph1
7  g4   ph3
8  g5   ph4
9  g6   ph2

g=基因名称(strig,integer,Float),d=疾病名称(string),ph=表型

主要目的是比较F2中的所有基因和F1中的基因,如果它们相等,则附加与疾病相关的基因名称和表型,以便得到一个输出文件F3,其中包含所有与基因表型相关的疾病。你知道吗

这是预期输出:

gene disease phenotype
g1   d1      ph2
g1   d2      ph2
g2   d2      ph1
g2   d3      ph2
ect. 

有人能帮我写剧本吗?任何帮助都将不胜感激。谢谢!你知道吗


Tags: 名称基因ph4pandad2d1d3gene
1条回答
网友
1楼 · 发布于 2024-09-26 22:53:13

基因与表型之间存在一对多关系,基因与疾病之间存在一对多关系。如果你加入基因,将会有一个多对多。参见示例输出。这就是你要找的吗?你知道吗

data = [
    ["g1", "d1"], 
    ["g1", "d2"],
    ["g1", "d3"],
    ["g2", "d2"], 
    ["g2", "d3"]
]
f1 = pd.DataFrame(data, columns={"gene", "disease"})


data = [
    ["g1", "ph1"], 
    ["g1", "ph2"],
    ["g2", "ph2"], 
    ["g2", "ph3"]
]
f2 = pd.DataFrame(data, columns={"gene", "phenotype"})

f1.merge(f2)



idx gene disease phenotype
0   g1  d1  ph1
1   g1  d1  ph2
2   g1  d2  ph1
3   g1  d2  ph2
4   g1  d3  ph1
5   g1  d3  ph2
6   g2  d2  ph2
7   g2  d2  ph3
8   g2  d3  ph2
9   g2  d3  ph3

相关问题 更多 >

    热门问题