用分隔符pandas python拆分列

发布于 2021-01-29 19:35:05

我有一个小样本数据:

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)

好像

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

我想用’-‘分隔符分隔列’V’并将其移至另一个名为’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

到目前为止,我尝试过的代码不完整,无法正常工作:

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

要么

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})
关注者
0
被浏览
93
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    str.split与vectoried一起使用expand=True

    In [42]:
    df[['V','allele']] = df['V'].str.split('-',expand=True)
    df
    
    Out[42]:
          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   GHV6   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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看