Python Pandas: Read_excel guesses the datatype, how can I protect the column names(headers) from being changed to floats?

I have a dataset in which column headers are numbers (some are integer, some are with fractions), when I use read_excel, it reads all of them as floats, but I do not want the ones with no fractions (integers) to be changed.

My read_excel call:

      df = pd.read_excel('file.xlsx', sheet_name='sheet1',
                    index_col=None, engine='openpyxl')

For example, The column headers are: 1000, 100.2, 105, 299.455 After calling read_excel;

print(df.columns) gives me: 1000.0, 100.2, 105.0, 299.455

How can I get them in the way they are? Should I convert the headers to strings?