将字符串分割为多个定界符

时间:2018-08-10 17:12:04

标签: python pandas

有没有办法在pandas dataframe列中拆分字符串

coordinates(gDNA)
chr10:g.89711916T>A 

进入制表符分隔的字段

chr\start\ref\alt

chr10\t89711916\tT\tA

在熊猫中。

到目前为止,我已经尝试过

df[['chr','others']] = df['coordinates(gDNA)'].str.split(':',expand=True)

并提取了第一部分,但不确定其余部分怎么做

3 个答案:

答案 0 :(得分:3)

使用:

df[['chr','start', 'alt']] = df['coordinates(gDNA)'].str.split(':g.|>',expand=True)
df[['start','ref']] = df['start'].str.extract('(\d+)(\D+)')
print (df)
     coordinates(gDNA)    chr     start alt ref
0  chr10:g.89711916T>A  chr10  89711916   A   T

答案 1 :(得分:3)

尝试一下:

df[['chr','start','ref','alt']] = df['coordinates(gDNA)'].str.extract('(\w+).*?(\d+)(\w+).*?(\w+)')

enter image description here

答案 2 :(得分:2)

df = pd.DataFrame(
    columns=['coordinates(gDNA)'],
    data=[['chr10:g.89711916T>A']]
)

def parser(x):
    ch, x = x.split(':g.')
    start = int(x[:-3])
    ref = x[-3]
    alt = x[-1]
    return dict(chr=ch, start=start, ref=ref, alt=alt)

pd.DataFrame([*map(parser, df['coordinates(gDNA)'])], df.index)


  alt    chr ref     start
0   A  chr10   T  89711916