Будет ли False заменено, зависит от типа d серии:
In [12]: pd.Series([0, 1]).replace(0, 99)
Out[12]:
0 99
1 1
dtype: int64
In [13]: pd.Series([0.0, 1.0]).replace(0, 99)
Out[13]:
0 99.0
1 1.0
dtype: float64
In [14]: pd.Series([False, True]).replace(0, 99)
Out[14]:
0 False
1 True
dtype: bool
In [15]: pd.Series([0, 0.0, False, 1.0]).replace(0, 99)
Out[15]:
0 99.0
1 99.0
2 99.0
3 1.0
dtype: float64
Если он не заменяется, вероятно, в вашей серии dtype = bool, и поэтому pandas решила обратить внимание на разницу типов. Если ваша серия имеет dtype = object, она обрабатывается как набор объектов уровня Python (что в принципе и есть), а после False == 0 == 0.0 все три заменяются.