# Based on test_rank_ea_small_values
import pandas as pd
ser = pd.Series(
[5.4954145e29, -9.791984e-21, 9.3715776e-26, pd.NA, 1.8790257e-28],
dtype="Float64",
)
ser2 = ser.astype(object)
>>> ser.rank(method="min")
0 4.0
1 1.0
2 3.0
3 NaN
4 2.0
dtype: float64
>>> ser2.rank(method="min")
0 4.0
1 1.0
2 1.0
3 NaN
4 1.0
dtype: float64
I'd expect 1) the values to match and 2) to get NA rather than NaN at least for the Float64 case.
Update: if we convert to float64[pyarrow] first we do get NA back and a uint64[pyarrow] dtype.