get_dummies(dummy_na=True) treats int like float when creating dummy names
`pd.get_dummies(pd.DataFrame({"id":[1,2,3]}), columns=["id"], dummy_na=True)`
will produce

| |id_1.0   | id_2.0   |  id_3.0  |   id_nan 
---|---|---|---|---
 0  |  1| 0| 0  | 0  
1 | 0  |1   |0   |0
  2| 0  |0   |1   |0

Which creates different column names from `pd.get_dummies(pd.DataFrame({"id":[1,2,3]}), columns=["id"])`

| |id_1   | id_2   |  id_3  |    
---|---|---|---|
 0  |  1| 0| 0  |   
1 | 0  |1   |0   |
  2| 0  |0   |1   |

It looks that this line
https://github.com/pandas-dev/pandas/blob/6c0c27730fb5b20978824fb380449cd3acef55f7/pandas/core/reshape/reshape.py#L909

converts the int array into float array because of `np.nan`.