我想拆分一个混合块,并将字母分别分配给每一列:
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个以上的混合块,我希望通过为第一个块分配一个唯一的名称,如为第一个块分配h1_x and h1_y,为第二个块分配h2_x, h2_y,来相应地拆分所有这些块。
发布于 2017-02-01 05:44:02
如果您想自动查找混合列并拆分它们,这是可行的。
df = pd.DataFrame({'m1': ["A", "T"], 'hybrid1': ["A|C", "T|A"], 's1': ["C", "A"], 'hybrid2': ["B|D", "F|Z"], 'hybrid3': ["V|K", "M|L"]})
for i in range(len(df.columns)):
if (df.ix[:, i].str.len() >1).any():
df_i = pd.DataFrame(df.ix[:, i].str.split('|', expand=True).rename(columns={0: (list(df)[i])+'_x', 1: (list(df)[i])+'_y'}))
df = df.drop(df.columns[i], axis = 1)
df = pd.concat([df_i, df], axis=1)https://stackoverflow.com/questions/41966763
复制相似问题