将列中的特定行与数据框中该特定行的所有列进行比较

时间:2020-11-11 23:07:43

标签: python pandas

我是python的新手,已经尝试了一个星期了。

我有一个2行,每行2000列的数据集,数据采用字典格式,我用df.DataFrame进行了转换(不知道这是否有帮助)

这是一个例子

          gene1  gene2  gene3 etc

 location [1,2]  [3,4]  [5,6]
 enhancer ATCG   GGGG   CATA 
我想将基因1的增强子与其余基因的增强子一一比较,以告诉我它们之间有多少差异。我知道我无法为此创建新列,因为我认为最好的解决方案是将新信息保存到新的数据框中

示例输出

             gene1   gene 2  gene3 
difference     0       3       4

我想从不同的角度来解决这个问题,我已经尝试过使用嵌套循环来实现,但是无法弄清楚。

谢谢

1 个答案:

答案 0 :(得分:0)

这绝对不是最好的方法,但是我尝试以下方法,因为这对我来说是最直接的方法。

df = pd.DataFrame({"gene1":[[1,2],"ATCG"],
                   "gene2":[[3,4],"GGGG"],
                   "gene3":[[5,6],"CATA"]},index=["location","enhancer"])
target_gene = df.loc["enhancer","gene1"]
df.loc["difference",:] = list(map(lambda x:sum([c1!=c2 for (c1,c2) in zip(x,target_gene)]), 
                                  df.loc["enhancer",:]))
df

enter image description here