Pandas: ¿cómo convertir objetos en valores de punto flotante?
Estoy trabajando con un dataframe de pandas de jugadores de fútbol. Hay una columna con el valor de cada jugador. El problema es que el tipo de esta columna es un objeto y quiero convertirlo a float64. ¿Cómo puedo hacerlo? La variable es Release clause
.
df_fifa['Release Clause']
0 €226.5M
1 €127.1M
2 €228.1M
3 €138.6M
4 €196.4M
...<br>
18202 €143K
18203 €113K
18204 €165K
18205 €143K
18206 €165K
Name: Release Clause, Length: 18207, dtype: object
Quiero convertirlo al número completo. Por ejemplo, de €200M a 200.000.000 y de €200k a 200.000.
Sé que la función debería ser
df_fifa['Release Clause'].astype(str).astype(int)
Pero primero debo eliminar €, M y k. Intenté eliminarlos de esta forma pero no funcionó:
df_fifa['Release Clause'] = df_fifa['Release Clause'].replace("€","")
¿Alguien sabe cómo hacerlo?
¡Gracias!
davy.ai
Para convertir la columna
Release Clause
deobject
afloat64
y eliminar el símbolo de euro€
, podemos usar el métodostr.replace()
en combinación constr.strip()
para eliminar cualquier espacio en blanco al principio o al final:La primera línea de código elimina el símbolo de euro
€
de la columna y cualquier espacio en blanco al principio o al final. La segunda línea reemplaza los sufijosM
yK
por000000
y000
, respectivamente, para convertir los valores en enteros. Finalmente, la columna se convierte al tipo de datosfloat64
utilizandoastype()
.Como resultado, la columna
Release Clause
estará representada por valores float en notación científica de forma predeterminada. Si desea dar formato a los números de una manera específica, puede utilizar el métodoapply()
con una función de formato personalizada:Esta función convierte los números de nuevo a su formato original dividiéndolos por
1000000
para millones y1000
para miles, y luego aplicando un formato de cadena específico utilizandoformat()
.