2016-05-19 19 views
8

ho una piccola dati di esempio:splitting una colonna delimitatore panda pitone

import pandas as pd 
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) 

sembra

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 

voglio dividere la colonna 'V' dal delimitatore '-' e spostarlo in un'altra colonna denominata '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 

il codice ho provato così fa r è incompleta e non ha funzionato:

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

o

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}) 

risposta

15

Usa vectoried str.split con 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 
Problemi correlati