Python - Dataframe dtype: object a to_numeric/astype/float

 
Vista:
Imágen de perfil de P
Val: 5
Ha aumentado su posición en 630 puestos en Python (en relación al último mes)
Gráfica de Python

Dataframe dtype: object a to_numeric/astype/float

Publicado por P (2 intervenciones) el 18/06/2021 17:46:51
Hola a todos. Soy Pol y soy nuevo en el foro.

Tengo un df con los valores que hay en una cartera de inversión:

pepis

Mi objetivo es trabajar con las sumas de varias columnas, como la última 'euros'.

El problema que tengo es que no consigo sumar los valores de dicha columna porque me da como resultado:

'184,3442,9191,7361,62318,9584,8679,79121,45133,39142,6525,67127,1635,1243,6647,310,5299,4071,1648,76415,50106,914,131,2498,63485,1369,978,95206,1464,68304,925,490,96294,6821,0497,82105,99569,90254,83'

Si hago df.dtypes obtengo:
producto object
symbol object
cantidad float64
precio_a object
local object
euros object
dtype: object

Si hago type(df) obtengo:
pandas.core.series.Series


¿Debo cambiar la clase de la columna 'euros' de object a numeric/float? ¿Debo cambiar solo esa columna o todo el df?

He intentado hacer df.to_numeric() pero da el error:

'DataFrame' object has no attribute 'to_numeric'

He intentado df['euros'].replace('[^\d.]', regex=True).astype(float) pero me dice:

ValueError: could not convert string to float: '184,34'

¿Alguien que me ayude a saber por dónde está solución? Estoy totalmente perdido.

Perdonad si es una duda muy simple pero soy nuevo en Python y programación.

Gracias por leer.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Dataframe dtype: object a to_numeric/astype/float

Publicado por joel (901 intervenciones) el 19/06/2021 09:27:33
Hola Pol, puedes utilizar astype... algo así:

1
df["euros"]= df["euros"].astype("float")

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de P
Val: 5
Ha aumentado su posición en 630 puestos en Python (en relación al último mes)
Gráfica de Python

Dataframe dtype: object a to_numeric/astype/float

Publicado por P (2 intervenciones) el 19/06/2021 13:09:36
Muchas gracias por tu respuesta, Joel.

Si pruebo astype como me indicas:

1
df["euros"]= df["euros"].astype("float")

Me da error y esto es lo que obtengo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-22-cd7eeb0efc40> in <module>
----> 1 pepis["euros"]= pepis["euros"].astype("float")
 
~\anaconda3\lib\site-packages\pandas\core\generic.py in astype(self, dtype, copy, errors)
   5875         else:
   5876             # else, only a single dtype is given
-> 5877             new_data = self._mgr.astype(dtype=dtype, copy=copy, errors=errors)
   5878             return self._constructor(new_data).__finalize__(self, method="astype")
   5879
 
~\anaconda3\lib\site-packages\pandas\core\internals\managers.py in astype(self, dtype, copy, errors)
    629         self, dtype, copy: bool = False, errors: str = "raise"
    630     ) -> "BlockManager":
--> 631         return self.apply("astype", dtype=dtype, copy=copy, errors=errors)
    632
    633     def convert(
 
~\anaconda3\lib\site-packages\pandas\core\internals\managers.py in apply(self, f, align_keys, ignore_failures, **kwargs)
    425                     applied = b.apply(f, **kwargs)
    426                 else:
--> 427                     applied = getattr(b, f)(**kwargs)
    428             except (TypeError, NotImplementedError):
    429                 if not ignore_failures:
 
~\anaconda3\lib\site-packages\pandas\core\internals\blocks.py in astype(self, dtype, copy, errors)
    671             vals1d = values.ravel()
    672             try:
--> 673                 values = astype_nansafe(vals1d, dtype, copy=True)
    674             except (ValueError, TypeError):
    675                 # e.g. astype_nansafe can fail on object-dtype of strings
 
~\anaconda3\lib\site-packages\pandas\core\dtypes\cast.py in astype_nansafe(arr, dtype, copy, skipna)
   1095     if copy or is_object_dtype(arr) or is_object_dtype(dtype):
   1096         # Explicit copy, or required since NumPy can't view from / to object.
-> 1097         return arr.astype(dtype, copy=True)
   1098
   1099     return arr.view(dtype)
 
ValueError: could not convert string to float: '184,34'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar