Pregunta simple aquí: ¿cómo reemplazo todos los espacios en blanco en una columna con un cero?

Por ejemplo:

  Name       Age
  John       12
  Mary 
  Tim        15

En

  Name       Age
  John       12
  Mary       0
  Tim        15

He intentado usar algo como esto, pero no estoy seguro de cómo Pandas realmente lee espacios en blanco:

 merged['Age'].replace(" ", 0).bfill()

¿Alguna idea?

1
user3682157 30 ago. 2014 a las 23:39

3 respuestas

La mejor respuesta

Utilice el método integrado convert_objects y establezca el parámetro convert_numeric=True:

In [12]:
# convert objects will handle multiple whitespace, this will convert them to NaN
# we then call fillna to convert those to 0
df.Age = df[['Age']].convert_objects(convert_numeric=True).fillna(0)
df
Out[12]:
   Name  Age
0  John   12
1  Mary    0
2   Tim   15
2
EdChum - Reinstate Monica 30 ago. 2014 a las 19:49

Aquí hay una respuesta modificada de esta pregunta más completa. Lo haré un poco más Pythonic y resolveré tu problema basestring.

def ws_to_zero(maybe_ws):
    try:
        if maybe_ws.isspace():
            return 0
        else:
            return maybe_ws
    except AttributeError:
        return maybe_ws

d.applymap(ws_to_zero)

Donde d es tu marco de datos.

1
Community 23 may. 2017 a las 10:33
merged['Age'] = merged['Age'].apply(lambda x: 0 if x == ' ' else x)
2
paulo.filip3 30 ago. 2014 a las 22:51