Convierta una cadena que contiene un precio con espacio después de miles para que flote en la columna pandas

Resuelto Snowfire asked hace 2 años • 1 respuestas

Tengo una columna que contiene precios con una moneda. Quiero convertir estos precios a flotadores. El problema aquí es que estos precios contienen espacios después de miles.

Mi marco de datos inicial:

import numpy as np
import pandas as pd
prices = pd.Series(['239,00$','1 345,00$','1,00$','4 344,33$'])
df = pd.DataFrame(prices,columns = ["prices"])

print df


   prices
0     239,00$
1     1 345,00$
2     1,00$
3     4 344,33$

El resultado que quiero obtener es una columna de marco de datos donde mis valores son flotantes y no tienen espacios:

   prices
0     239.00
1     1345.00
2     1.00
3     4344.33

Intenté usar replacela función para eliminar espacios en una cadena pero no parece funcionar. ¿Alguna idea de cómo puedo llegar a ese resultado?

Snowfire avatar Feb 17 '22 01:02 Snowfire
Aceptado

Elimine los caracteres que no sean un dígito o una coma ( [^\d,]) y luego reemplácelos ,con .:

df.prices.str.replace('[^\d,]', '').str.replace(',', '.').astype(float)

0     239.00
1    1345.00
2       1.00
3    4344.33
Name: prices, dtype: float64
Psidom avatar Feb 16 '2022 18:02 Psidom