我想拆分一个混合 block 并分别为每一列分配字母:
M1 M2 M3 M4 hybrid_block S1 S2 S3 S4
A T T A A|C C G C T
T G C T T|A A T A T
C A A C C|G G A C G
G T G T G|T C T T T
使用以下代码:
d1 = pd.concat([
df.filter(like='M'),
df.hybrid_block.str.split('|', expand=True).rename(columns='H{}'.format),
df.filter(like='S')
], axis=1)
我得到的输出:
M1 M2 M3 M4 H0 H1 S1 S2 S3 S4
A T T A A C C G C T
T G C T T A A T A T
C A A C C G G A C G
G T G T G T C T T T
我宁愿:
M1 M2 M3 M4 H_x H_y S1 S2 S3 S4
A T T A A C C G C T
T G C T T A A T A T
C A A C C G G A C G
G T G T G T C T T T
此外,如果有超过 1 个混合 block ,我想相应地拆分它们,通过为第一个 block 分配一个唯一的名称,如 h1_x 和 h1_y
和 h2_x, h2_y
用于第二个 block 。
最佳答案
你也可以使用.str.extract()方法:
In [107]: d1 = pd.concat([
...: df.filter(like='M'),
...: df.hybrid_block.str.extract(r'(?P<H_x>[^\|]*)\|(?P<H_y>[^\|]*)', expand=True),
...: df.filter(like='S')
...: ], axis=1)
...:
In [108]: d1
Out[108]:
M1 M2 M3 M4 H_x H_y S1 S2 S3 S4
0 A T T A A C C G C T
1 T G C T T A A T A T
2 C A A C C G G A C G
3 G T G T G T C T T T
关于python - 如何使用分隔符拆分 pandas 中的列并在此过程中分配自定义唯一名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41966763/