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列