Pandas 用字符串的子集替换字符串
我有一个如下所示的数据框:Pandas 用字符串的子集替换字符串,pandas,Pandas,我有一个如下所示的数据框: 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),然后从每
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
如有任何建议,我们将不胜感激。提前感谢一种方法是使用
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
一种方法是使用
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
AA AG GG AA
是1列还是5列?每行有5列AA AG GG AA
是1列还是5列?每行有5列