Saltar al contenido

¿Cómo convertir tipo de datos: objeto a float64 en python?

Siéntete en la libertad de divulgar nuestro espacio y códigos con tus amigos, necesitamos tu ayuda para hacer crecer esta comunidad.

Solución:

Puede convertir la mayoría de las columnas simplemente llamando convert_objects:

In [36]:

df = df.convert_objects(convert_numeric=True)
df.dtypes
Out[36]:
Date         object
WD            int64
Manpower    float64
2nd          object
CTR          object
2ndU        float64
T1            int64
T2          int64
T3           int64
T4        float64
dtype: object

Para la columna ‘2nd’ y ‘CTR’ podemos llamar al vectorizado str métodos para reemplazar el separador de miles y eliminar el signo ‘%’ y luego astype para convertir:

In [39]:

df['2nd'] = df['2nd'].str.replace(',','').astype(int)
df['CTR'] = df['CTR'].str.replace('%','').astype(np.float64)
df.dtypes
Out[39]:
Date         object
WD            int64
Manpower    float64
2nd           int32
CTR         float64
2ndU        float64
T1            int64
T2            int64
T3            int64
T4           object
dtype: object
In [40]:

df.head()
Out[40]:
        Date  WD  Manpower   2nd   CTR  2ndU   T1    T2   T3     T4
0   2013/4/6   6       NaN  2645  5.27  0.29  407   533  454    368
1   2013/4/7   7       NaN  2118  5.89  0.31  257   659  583    369
2  2013/4/13   6       NaN  2470  5.38  0.29  354   531  473    383
3  2013/4/14   7       NaN  2033  6.77  0.37  396   748  681    458
4  2013/4/20   6       NaN  2690  5.38  0.29  361   528  541    381

O puedes hacer el string manejar las operaciones anteriores sin la llamada a astype y luego llamar convert_objects para convertir todo de una vez.

ACTUALIZAR

Desde la versión 0.17.0convert_objects está en desuso y no hay una función de nivel superior para hacer esto, por lo que debe hacer:

df.apply(lambda col:pd.to_numeric(col, errors='coerce'))

Consulte los documentos y esta pregunta relacionada: pandas: to_numeric para varias columnas

convert_objects está en desuso.

Para pandas >= 0.17.0, use pd.to_numeric

df["2nd"] = pd.to_numeric(df["2nd"])

Tuve este problema en un DataFrame (df) creado a partir de una hoja de Excel con varias filas de encabezado interno.

Después de limpiar las filas del encabezado interno de dflos valores de las columnas eran de “nonull tipo de objeto (DataFrame.info()).

Este código convirtió todos los valores numéricos de múltiples columnas a int64 y float64 de una sola vez:

for i in range(0, len(df.columns)):
    df.iloc[:,i] = pd.to_numeric(df.iloc[:,i], errors='ignore')
    # errors='ignore' lets strings remain as 'non-null objects'

Te mostramos reseñas y valoraciones

Nos puedes añadir valor a nuestra información añadiendo tu experiencia en las crónicas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *