Encontre todas as colunas do dataframe no Pandas cujo tipo é float ou um tipo específico?

Eu tenho um dataframe, df, que tem algumas colunas do tipo float64, enquanto as outras são do objeto. Devido à natureza mista, não posso usar

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

como ocorreu o erro com as colunas cujo tipo é float64 (que mensagem de erro enganosa!)

então eu gostaria de poder fazer algo como

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

Portanto, minha pergunta é se existe alguma expressão de filtro que eu possa usar com o df.columns?

Eu acho que, alternativamente, com menos elegância, eu poderia fazer:

 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" 

Eu também gostaria de saber por que, no código acima, substituindo '' por 'desconhecido', o código funcionaria para determinadas células, mas falhou com uma célula com o erro "ValueError: Erro ao analisar a cadeia de data e hora" unknown "na posição 0"

Muito obrigado!

Yu

questionAnswers(2)

yourAnswerToTheQuestion