¿Por qué Pandas me dice 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 lo son dtype object
. Convierto explícitamente esos objetos en 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 tiene dtype object
, aunque type(df["attr2"].ix[0]
revela str
, lo que es correcto.
Pandas distingue entre int64
y float64
y object
. ¿Cuál es la lógica detrás de esto cuando no hay dtype str
? ¿Por qué está str
cubierto por object
?