pythonpandastype-conversion

Converting all columns of dtype 'object' to 'float' in Python/Pandas


I wanted to convert all the 'object' type columns to another data type (float) in a dataframe without hard coding the column names. I was able to piece together some code from other answers that seems to work, but I feel like there's got to be a simpler way of doing this.

# Creating isolating columns of object data type
object_cols = df.loc[:, df.dtypes == 'O']

# Extracting column names with list comprehension
object_type_columns = [col for col in object_cols.columns]

# Converting column types of .astype in a for loop
for col in object_type_columns:
  df[col] = df[col].astype(float)

Let me know if there's any information I'm leaving out (I'm new at this). Thanks!


Solution

  • A method available from pandas version 2.0. is "convert_dtypes", which will find the best type match for the data. So as you posted in the question this will take care of objects converted to float or integer if that matches the column data.

    df = df.convert_dtypes()