Python - 在Pandas的Apply函数中获取值的索引

时间:2017-04-05 00:14:31

标签: python pandas numpy dataframe apply

我必须重新编码一些我必须编码的单倍型。我将它们放在305行和129902列的Pandas DataFrame上,它看起来像这样(只有一列和20行):

rs#                                                  rs12914615  
SNPalleles                                                  C/T  
chrom                                                     chr15  
pos                                                    98259206  
strand                                                        +  
genome_build                                           ncbi_B36  
center                                               affymetrix  
protLSID      urn:LSID:affymetrix.hapmap.org:Protocol:Genome...  
assayLSID     urn:LSID:affymetrix.hapmap.org:Assay:SNP_A-837...  
panelLSID         urn:lsid:dcc.hapmap.org:Panel:CEPH-30-trios:1  
QC_code                                                     QC+  
NA06985                                                      CT  
NA06991                                                      CT  
NA06993                                                      CT  
NA06993.dup                                                  CC  
NA06994                                                      CC  
NA07000                                                      CC  
NA07019                                                      CT  
NA07022                                                      CT  

想法是比较每个个体的值(NA06 ......)是否与野生型(SNPalleles行的第一个字母)具有共同的核苷酸,或者如果没有,则相应地编码。

我的问题是,我不知道如何迭代数据框,同时引用它位于同一列中其他行的野生型。

输出应该如下所示:

NA06985                                                      1  
NA06991                                                      1  
NA06993                                                      1  
NA06993.dup                                                  0  
NA06994                                                      0  
NA07000                                                      0  
NA07019                                                      1  
NA07022                                                      1

为野生型(该基因为CC),杂合子(CT)为1,突变体为纯合子(TT)。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

df.filter(
    like='NA', axis=0
).eq(df.loc['SNPalleles'].str.replace('/', '')).astype(int)

             rs12914615
rs#                    
NA06985               1
NA06991               1
NA06993               1
NA06993.dup           0
NA06994               0
NA07000               0
NA07019               1
NA07022               1