objs = [df, pd.DataFrame(df['samples'].tolist())]
pd.concat(objs, axis=1).drop('samples', axis=1)
pd.melt(_, var_name='sample_num', value_name='sample', value_vars=[0, 1, 2],
    id_vars=['subject', 'trial_num'])
pandas: When cell contents are lists, create a row for each element in the list