[Python] Splitting a pandas dataframe column by delimiter

Discussão em 'Python' iniciado por Stack, Maio 9, 2025.

  1. Stack

    Stack Membro Participativo

    i have a small sample data:

    import pandas as pd

    df = {'ID': [3009, 129, 119, 120, 121, 122, 130, 3014, 266, 849, 174, 844],
    'V': ['IGHV7-B*01', 'IGHV7-B*01', 'IGHV6-A*01', 'GHV6-A*01', 'IGHV6-A*01',
    'IGHV6-A*01', 'IGHV4-L*03', 'IGHV4-L*03', 'IGHV5-A*01', 'IGHV5-A*04',
    'IGHV6-A*02','IGHV6-A*02'],
    'Prob': [1, 1, 0.8, 0.8056, 0.9, 0.805, 1, 1, 0.997, 0.401, 1, 1]}

    df = pd.DataFrame(df)


    looks like

    df

    Out[25]:
    ID Prob V
    0 3009 1.0000 IGHV7-B*01
    1 129 1.0000 IGHV7-B*01
    2 119 0.8000 IGHV6-A*01
    3 120 0.8056 IGHV6-A*01
    4 121 0.9000 IGHV6-A*01
    5 122 0.8050 IGHV6-A*01
    6 130 1.0000 IGHV4-L*03
    7 3014 1.0000 IGHV4-L*03
    8 266 0.9970 IGHV5-A*01
    9 849 0.4010 IGHV5-A*04
    10 174 1.0000 IGHV6-A*02
    11 844 1.0000 IGHV6-A*02


    I want to split the column 'V' by the '-' delimiter and move it to another column named 'allele'

    Out[25]:
    ID Prob V allele
    0 3009 1.0000 IGHV7 B*01
    1 129 1.0000 IGHV7 B*01
    2 119 0.8000 IGHV6 A*01
    3 120 0.8056 IGHV6 A*01
    4 121 0.9000 IGHV6 A*01
    5 122 0.8050 IGHV6 A*01
    6 130 1.0000 IGHV4 L*03
    7 3014 1.0000 IGHV4 L*03
    8 266 0.9970 IGHV5 A*01
    9 849 0.4010 IGHV5 A*04
    10 174 1.0000 IGHV6 A*02
    11 844 1.0000 IGHV6 A*02


    the code i have tried so far is incomplete and didn't work:

    df1 = pd.DataFrame()
    df1[['V']] = pd.DataFrame([ x.split('-') for x in df['V'].tolist() ])


    or

    df.add(Series, axis='columns', level = None, fill_value = None)
    newdata = df.DataFrame({'V':df['V'].iloc[::2].values,
    'Allele': df['V'].iloc[1::2].values})

    Continue reading...

Compartilhe esta Página