¿Encuentra todas las columnas del marco de datos en Pandas cuyo tipo es flotante o un tipo particular?

Tengo un marco de datos, df, que tiene algunas columnas de tipo float64, mientras que las otras son de objeto. Debido a la naturaleza mixta, no puedo usar

df.fillna('unknown') #getting error "ValueError: could not convert string to float:"

como ocurrió el error con las columnas cuyo tipo es float64 (¡qué mensaje de error engañoso!)

así que desearía poder hacer algo como

for col in df.columns[<dtype == object>]:
    df[col] = df[col].fillna("unknown")

Entonces, mi pregunta es si existe alguna expresión de filtro que pueda usar con df.columns.

Supongo que, alternativamente, con menos elegancia, podría hacer:

 for col in df.columns:
        if (df[col].dtype == dtype('O')): # for object type
            df[col] = df[col].fillna('') 
            # still puzzled, only empty string works as replacement, 'unknown' would not work for certain value leading to error of "ValueError: Error parsing datetime string "unknown" at position 0" 

También me gustaría saber por qué en el código anterior, reemplazar '' por 'desconocido' el código funcionaría para ciertas celdas, pero falló con una celda con el error "ValueError: Error al analizar la cadena de fecha y hora" desconocido "en la posición 0"

¡Muchas gracias!

Yu

Respuestas a la pregunta(2)

Su respuesta a la pregunta