Stop Pandas from converting int to float Stop Pandas from converting int to float python python

Stop Pandas from converting int to float


If you set dtype=object, your series will be able to contain arbitrary data types:

df["int"] = pd.Series([], dtype=object)df["str"] = pd.Series([], dtype=str)df.loc[0] = [0, "zero"]print(df)print()df.loc[1] = [1, None]print(df)   int   str0    0  zero1  NaN   NaN  int   str0   0  zero1   1  None


As of pandas 1.0.0 I believe you have another option, which is to first use convert_dtypes. This converts the dataframe columns to dtypes that support pd.NA, avoiding the issues with NaN/None.

...df = df.convert_dtypes()df.loc[1] = [1, None]print(df)#   int   str# 0   0  zero# 1   1  NaN


If you use DataFrame.append to add the data, the dtypes are preserved, and you do not have to recast or rely on object:

In [157]: dfOut[157]:   int   str0    0  zeroIn [159]: df.append(pd.DataFrame([[1, None]], columns=['int', 'str']), ignore_index=True)Out[159]:   int   str0    0  zero1    1  None