You could apply a join to the list elements to make a comma separated string and then call the vectorised str.split with expand=True to create the new columns:
In [12]:
df[['UserID', 'email', 'address']] = df['col3'].apply(','.join).str.split(expand=True)
df
Out[12]:
alias col3 name \
0 david [3109892828, [email protected], 123 main st] mark
1 twixt [5468392873, [email protected], 345 grand st] john
UserID email address
0 3109892828,[email protected],123 main st
1 5468392873,[email protected],345 grand st
A cleaner method would be to apply the pd.Series ctor which will turn each list into a Series:
In [15]:
df[['UserID', 'email', 'address']] = df['col3'].apply(pd.Series)
df
Out[15]:
alias col3 name UserID \
0 david [3109892828, [email protected], 123 main st] mark 3109892828
1 twixt [5468392873, [email protected], 345 grand st] john 5468392873
email address
0 [email protected] 123 main st
1 [email protected] 345 grand st