Cadenas en un DataFrame, pero dtype es objeto

¿Por qué las pandas me dicen que tengo objetos, aunque cada elemento de la columna seleccionada es una cadena, incluso después de una conversión explícita?

Este es mi DataFrame:

<class 'pandas.core.frame.DataFrame'>
Int64Index: 56992 entries, 0 to 56991
Data columns (total 7 columns):
id            56992  non-null values
attr1         56992  non-null values
attr2         56992  non-null values
attr3         56992  non-null values
attr4         56992  non-null values
attr5         56992  non-null values
attr6         56992  non-null values
dtypes: int64(2), object(5)

Cinco de ellos sondtype object. Convierto explícitamente esos objetos a cadenas:

for c in df.columns:
    if df[c].dtype == object:
        print "convert ", df[c].name, " to string"
        df[c] = df[c].astype(str)

Entonces,df["attr2"] todavía tienedtype object, a pesar de quetype(df["attr2"].ix[0] revelastr, cual es correcta.

Pandas distingue entreint64 yfloat64 yobject. ¿Cuál es la lógica detrás de esto cuando no haydtype str? Porque es unstr cubierto porobject?

Respuestas a la pregunta(2)

Su respuesta a la pregunta