python - iloc - pandas-cambie df.index de float64 a unicode o cadena
python pandas select rows (1)
Puedes hacerlo de esa manera:
# for Python 2
df.index = df.index.map(unicode)
# for Python 3 (the unicode type does not exist and is replaced by str)
df.index = df.index.map(str)
En cuanto a por qué procederías de forma diferente a cuando convertirías de int a float, esa es una peculiaridad de numpy (la biblioteca en la que se basa pandas).
Cada matriz numpy tiene un dtype , que es básicamente el tipo de máquina de sus elementos: de esa manera, numpy trata directamente con los tipos nativos , no con los objetos de Python, lo que explica cómo es tan rápido. Por lo tanto, cuando cambie el tipo de int64 a float64, numpy moldeará cada elemento en el código C.
También hay un objeto dtype especial, que básicamente proporcionará un puntero hacia un objeto Python.
Si quiere cadenas, debe usar el objeto dtype. Pero el uso de .astype(object)
no le daría la respuesta que estaba buscando: en su lugar crearía un índice con el tipo de objeto , pero coloque los objetos de flotación de Python dentro.
Aquí, al usar map, convertimos el índice en cadenas con la función apropiada: numpy obtiene los objetos de cadena y comprende que el índice debe tener un tipo de objeto , porque ese es el único tipo que puede acomodar cadenas.
Quiero cambiar el índice (filas) de marcos de datos de float64 a string o unicode.
Pensé que esto funcionaría, pero aparentemente no:
#check type
type(df.index)
''pandas.core.index.Float64Index''
#change type to unicode
if not isinstance(df.index, unicode):
df.index = df.index.astype(unicode)
mensaje de error:
TypeError: Setting <class ''pandas.core.index.Float64Index''> dtype to anything other than float64 or object is not supported