Just a couple of minor esthetic changes. You only use ``col_unit`` once, so I think you could just leave:

```
col.unit = input[col.name].unit.to_string(format='fits')
```

since you don't gain anything from defining the intermediate variable ``col_unit``.

For ``scale``, it does make sense to define it because it does help the readability in the exception, but you can move the

```
scale = ...
```

line *inside* the ``except`` clause, because it's only needed then. That is:

```
except:
    scale = ...
    raise UnitScaleError(...)
```