To split text in a column into multiple rows with Python Pandas, we can use the str.split method.
For instance, we write
import pandas as pd
import numpy as np
df = pd.DataFrame(
{'CustNum': [32363, 31316],
'CustomerName': ['McCartney, Paul', 'Lennon, John'],
'ItemQty': [3, 25],
'Item': ['F04', 'F01'],
'Seatblocks': ['2:218:10:4,6', '1:13:36:1,12 1:13:37:1,13'],
'ItemExt': [60, 360]
}
)
df['Seatblocks'] = df['Seatblocks'].str.split('[ :]')
df = df.explode('Seatblocks').reset_index(drop=True)
cols = list(df.columns)
cols.append(cols.pop(cols.index('CustomerName')))
df = df[cols]
to create the df data frame.
Then we call str.split on df['Seatblocks']. to split the Seatblovks column values by the :.
Then we call exploded to fill the split column values into multiple rows.
And then we create the cols columns list with list.
Next, we call cols.append to append the CustomerName column.
And then we assign the df with the cols columns back to df.