I know this is old question but I recently run in a similar issue where I was required to swap a column.
My solution is for pyspark, but can easily implemented in other languages.
df = df.select([df[col] for col in df.columns if col != 'StudentAddress'])
this tecnique comes very handy when you have to swap column with a computed one.
For instance:
address = f.when(f.isnotnull(df.StudentAddress), df.StudentAddress).otherwise(f.lit('N/A'))
df = df.select([df[col] if col != 'StudentAddress' else address for col in df.columns])
Notice that in the list comprehension i return df[col]
instead of just col
to avoid ambiguities in case a previous join created more columns with the same name.