Just some basic examples, to illustrate your issues, hope this helps.
the issues you may have could be the following :
you have multiple datatypes in your column
or
you have NaN's in your columns, which need to be filled first before converting it back to an int.
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.uniform(0,3.5,size=5),columns=['Nums'])
print(df)
Nums
0 1.306457
1 1.921983
2 0.811730
3 0.208760
4 1.946754
it's quite obvious that these are floats, lets check the dtypes.
print(df.dtypes)
Nums float64
dtype: object
so, lets cast this into an int,
df['Nums'].astype(int)
print(df)
Nums
0 1
1 1
2 0
3 0
4 1
but what if we had text and None types within our df?
types = ['String', np.nan, 'Other',np.nan,'More Text']
df1 = pd.DataFrame({'Nums' : types})
df = pd.concat([df,df1],ignore_index=True)
print(df)
Nums
0 1
1 1
2 0
3 0
4 1
5 String
6 NaN
7 Other
8 NaN
9 More Text
# Lets cast this back to an int column
df['Nums'] = pd.to_numeric(df['Nums'],errors='coerce')
# now lets fillna's with 0 and cast back to an int column
df['Nums'] = df['Nums'].fillna(0).astype(int)
print(df)
Nums
0 1
1 1
2 0
3 0
4 1
5 0
6 0
7 0
8 0
9 0