我有一个如下数据框:
s1 AA AG AG GG AA
s2 GTTGTT GTTGTT GTTGTT GTTGTT GTTGTT
S3 TT CC TC TT TC
S3 AGTTAGTT AGTTAGTT AGTTAGTT AGTTAGTT AGTTAGTT
S3 GCGCGCGC GCGCGCGC GCGCGCGC GCGCGCGC GCGCGCGC
,我想查找数据帧中具有两个以上字符的每个字符串(例如GTTGTT),并将字符串分为两部分(所有字符串都是偶数)(GTT GTT),然后从每个字符中获取第一个字符部分(GG)。所以我的数据框将是这样的:
s1 AA AG AG GG AA
s2 GG GG GG GG GG
S3 TT CC TC TT TC
S3 AA AA AA AA AA
S3 GG GG GG GG GG
任何建议都值得赞赏。预先谢谢你
答案 0 :(得分:2)
一种方法是使用applymap
:
df = pd.DataFrame({'num': {0: 's1', 1: 's2', 2: 'S3', 3: 'S3', 4: 'S3'},
'A': {0: 'AA', 1: 'GTTGTT', 2: 'TT', 3: 'AGTTAGTT', 4: 'GCGCGCGC'},
'B': {0: 'AG', 1: 'GTTGTT', 2: 'CC', 3: 'AGTTAGTT', 4: 'GCGCGCGC'},
'C': {0: 'AG', 1: 'GTTGTT', 2: 'TC', 3: 'AGTTAGTT', 4: 'GCGCGCGC'},
'D': {0: 'GG', 1: 'GTTGTT', 2: 'TT', 3: 'AGTTAGTT', 4: 'GCGCGCGC'},
'E': {0: 'AA', 1: 'GTTGTT', 2: 'TC', 3: 'AGTTAGTT', 4: 'GCGCGCGC'}})
df.iloc[:,1:6] = df.iloc[:,1:6].applymap(lambda x: x[0]+x[len(x)//2])
print (df)
#
num A B C D E
0 s1 AA AG AG GG AA
1 s2 GG GG GG GG GG
2 S3 TT CC TC TT TC
3 S3 AA AA AA AA AA
4 S3 GG GG GG GG GG