425 votos

¿Cómo puedo reemplazar todos los valores de NaN con Cero en una columna de un cuadro de datos de pandas

Tengo un marco de datos como el siguiente

      itm Date                  Amount 
67    420 2012-09-30 00:00:00   65211
68    421 2012-09-09 00:00:00   29424
69    421 2012-09-16 00:00:00   29877
70    421 2012-09-23 00:00:00   30990
71    421 2012-09-30 00:00:00   61303
72    485 2012-09-09 00:00:00   71781
73    485 2012-09-16 00:00:00     NaN
74    485 2012-09-23 00:00:00   11072
75    485 2012-09-30 00:00:00  113702
76    489 2012-09-09 00:00:00   64731
77    489 2012-09-16 00:00:00     NaN

cuando trato de .aplicar una función a la columna de la cantidad obtengo el siguiente error.

ValueError: cannot convert float NaN to integer

He tratado de aplicar una función usando el .isan del Módulo de Matemáticas He probado el atributo de pandas .replace Probé el atributo de datos escasos de pandas 0.9 También he probado si NaN == declaración de NaN en una función. También he mirado este artículo ¿Cómo puedo reemplazar los valores de NA con ceros en R? mientras miraba otros artículos. Todos los métodos que he probado no han funcionado o no reconocen a NaN. Cualquier sugerencia o solución sería apreciada.

707voto

Aman Puntos 3440

Creo que DataFrame.fillna() hará esto por ti.

Enlace a Docs para un marco de datos y para una serie .

Ejemplo:

In [7]: df
Out[7]: 
          0         1
0       NaN       NaN
1 -0.494375  0.570994
2       NaN       NaN
3  1.876360 -0.229738
4       NaN       NaN

In [8]: df.fillna(0)
Out[8]: 
          0         1
0  0.000000  0.000000
1 -0.494375  0.570994
2  0.000000  0.000000
3  1.876360 -0.229738
4  0.000000  0.000000

Para rellenar los NaNs en una sola columna, seleccione sólo esa columna. En este caso estoy usando inplace=True para cambiar realmente el contenido de df.

In [12]: df[1].fillna(0, inplace=True)
Out[12]: 
0    0.000000
1    0.570994
2    0.000000
3   -0.229738
4    0.000000
Name: 1

In [13]: df
Out[13]: 
          0         1
0       NaN  0.000000
1 -0.494375  0.570994
2       NaN  0.000000
3  1.876360 -0.229738
4       NaN  0.000000

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X