Olá Orlando,
Se você tiver um DataFrame com tipos diferentes de dados e alguns valores nulos, ao usar o método .fillna(), todos os nulos serão substituídos por zero. Em casos que houver dados do tipo datetime ou date, a substituição será por uma data zerada.
Execute o exemplo, para ver:
import pandas as pd
import numpy as np
from datetime import datetime
dados = pd.DataFrame({'col A' : [1,2,3,4,5,6,np.nan],
'col B' : ['a',np.nan,'c','d',np.nan,'e','f'],
'col C' : [np.nan,True,False,True,True,False,True],
'col D' : [datetime.now(),datetime.now(),np.nan,datetime.now(),datetime.now(),datetime.now(),datetime.now()]})
dados.fillna(0, inplace = True)
dados
Out[]:
col A col B col C col D
0 1.0 a 0 2020-06-30 11:56:25.813239
1 2.0 0 True 2020-06-30 11:56:25.813239
2 3.0 c False 1970-01-01 00:00:00.000000
3 4.0 d True 2020-06-30 11:56:25.813239
4 5.0 0 True 2020-06-30 11:56:25.813239
5 6.0 e False 2020-06-30 11:56:25.813239
6 0.0 f True 2020-06-30 11:56:25.813239
Mas caso você queira substituir os valores nulos de apenas uma coluna, basta fazer o seguinte:
import pandas as pd
import numpy as np
from datetime import datetime
dados = pd.DataFrame({'col A' : [1,2,3,4,5,6,np.nan],
'col B' : ['a',np.nan,'c','d',np.nan,'e','f'],
'col C' : [np.nan,True,False,True,True,False,True],
'col D' : [datetime.now(),datetime.now(),np.nan,datetime.now(),datetime.now(),datetime.now(),datetime.now()]})
dados['col B'].fillna(0, inplace = True)
dados
Out[]:
col A col B col C col D
0 1.0 a NaN 2020-06-30 12:01:19.631239
1 2.0 0 True 2020-06-30 12:01:19.631239
2 3.0 c False NaT
3 4.0 d True 2020-06-30 12:01:19.631239
4 5.0 0 True 2020-06-30 12:01:19.631239
5 6.0 e False 2020-06-30 12:01:19.631239
6 NaN f True 2020-06-30 12:01:19.631239
Abs