Я думаю, вам также нужно получить копию, а не фрагмент кадра данных, если вы хотите добавить столбцы позже.
msk = np.random.rand(len(df)) < 0.8 train, test = df[msk].copy(deep = True), df[~msk].copy(deep = True)