Я делаю это довольно часто.Чтобы держаться ближе к тому, что вы написали:
df = data['ra', 'dec']
ascii.write(df, 'temp.dat', overwrite=True, formats={'ra':'%3.1f','dec':'%8.3f'})
или мой предпочтительный способ сделать это будет
aformats = ['%.1f','%.3f']
oformats = dict(zip(df.colnames, aformats))
ascii.write(df, 'temp.dat', overwrite=True, formats=oformats)
bc, указывать общее количество цифр не часто необходимо.