用a+B列中的字符替换[C]中的字符的最佳方法是什么

2024-05-14 10:57:22 发布

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

我用熊猫和我得到堆栈在下面的任务。你知道吗

我有下表:

CHROM   POS     SNP
chr1    931131  ?
chr1    959265  ?
chr1    970922  ?
chr1    973693  rs3892467
chr1    973858  rs3829740

每当[SNP]中的值='?'我想通过对其他两列中的值进行调整来改变它,以便输出如下:

CHROM   POS     SNP
chr1    931131  chr1:931131
chr1    959265  chr1:959265
chr1    970922  chr1:970922
chr1    973693  rs3892467
chr1    973858  rs3829740

先谢谢你 加布里埃拉


Tags: pos堆栈chr1snpchromrs3829740rs3892467
3条回答

也许最快的方法是“where”:

df["SNP"]=df.SNP.where( df.SNP.ne("?"), df.CHROM+":"+df.POS )

或者如果POS是int类型:

df["SNP"]=df.SNP.where( df.SNP.ne("?"), df.CHROM+":"+df.POS.astype(str) )

你可以试试

df.loc[df['SNP'] == '?', 'SNP'] = df[['CHROM', 'POS']].apply(':'.join, axis = 1)

你得到了吗

   CHROM    POS     SNP
0   chr1    970922  chr1:970922
1   chr1    970922  rs3892467

使用^{}

df['SNP']=df['SNP'].mask(df['SNP'].eq('?'),df['CHROM'].add(':')+df['POS'].astype(str))

print(df)

  CHROM     POS          SNP
0  chr1  931131  chr1:931131
1  chr1  959265  chr1:959265
2  chr1  970922  chr1:970922
3  chr1  973693    rs3892467
4  chr1  973858    rs3829740

相关问题 更多 >

    热门问题