我有这样一个数据帧:
CCDS Size gene exonCount
10804 NM_001320648_exon_4_0_chr21_44515804_r 50 U2AF1L5 8
9385 NM_018964_intron_9_0_chr21_43967251_f 6921 SLC37A1 21
1253 NM_004540_intron_4_0_chr21_22664562_f 32141 NCAM2 18
5233 NM_203417_intron_1_0_chr21_35893957_r 1878 RCAN1 4
3242 NM_001353691_intron_0_0_chr21_32493156_r 3684 TIAM1 30
我想解析CCDS列并引入一个名为farme
的新列,方法如下:
1)如果CCDS列的最后一个字段(基于“216;”解析后)是f
,则frame
值是df['CCDS'].str.split('_').str[3]+1
;&
2)如果CCDS列的最后一个字段是r
,那么frame
值将等于|exonCount-df['CCDS'].str.split('_').str[3]|
的绝对值
我曾试图设计一个lambda函数,但我不确定如何详细说明else
条件:
df['frame'] = df.Set.map( lambda x: df['CCDS'].str.split('_').str[3]+1
if intronExon_LDU['CCDS'].str.split('_').str[7] == 'f'
else ????)
使用
np.where
(可以很容易地推广到多个/嵌套条件)或者,
loc
使用布尔掩码掩码是用
str.endswith
干净地生成的。你知道吗相关问题 更多 >
编程相关推荐