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
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With