Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

splitting column into multiple columns

Tags:

python

pandas

I have a dataframe containing one column. I want to split it into multiple columns

106
B-PER
I-PER
I-PER
B-PER
I-PER
I-PER
I-PER
B-PER
B-PROPH
109
B-PER
B-PER
I-PER
B-PER
I-PER
B-PER
I-PER
B-PER
I-PER
B-PROPH
116
B-PER
I-PER
I-PER
B-PER
B-PER
B-PER
B-PER

I want to split this column into multiple columns when integer value come. I know i have to iterate over rows but I don't know how to split it. required output is:

106          109           116                          
B-PER        B-PER         B-PER
I-PER        B-PER         I-PER
I-PER        I-PER         I-PER
B-PER        B-PER         B-PER
I-PER        I-PER         B-PER
I-PER        B-PER         B-PER
I-PER        I-PER         B-PER
B-PER        B-PER
B-PROPH      I=PER
             PROPH
like image 738
Bilal Avatar asked Nov 30 '25 20:11

Bilal


1 Answers

Use:

#test numeric values
m = df.A.astype(str).str.isnumeric()
#repeat only numeric values to groups
df['g'] = df.A.where(m).ffill()
#filter out rows without numeric (because repeated)
df = df[~m]
#reshape
df1 = df.set_index([df.groupby('g').cumcount(), 'g'])['A'].unstack(fill_value='')

print (df1)

g      106      109    116
0    B-PER    B-PER  B-PER
1    I-PER    B-PER  I-PER
2    I-PER    I-PER  I-PER
3    B-PER    B-PER  B-PER
4    I-PER    I-PER  B-PER
5    I-PER    B-PER  B-PER
6    I-PER    I-PER  B-PER
7    B-PER    B-PER       
8  B-PROPH    I-PER       
9           B-PROPH   
like image 95
jezrael Avatar answered Dec 03 '25 08:12

jezrael