How to penalize for empty fields in a DataFrame?
This heavily depends on the domain knowledge. A general approach would be to place 


A multiplicative of the worst or average consistency at each circuit $c$, i.e. $(1 + m)\text{max}(\sigma_c)$ or $(1 + m)\text{avg}(\sigma_c)$ respectively, for the null values at that circuit, or
A multiplicative of the worst or average consistency of each driver $d$, i.e. $(1 + m)\text{max}(\sigma_d)$ or  $(1 + m)\text{avg}(\sigma_d)$ respectively, for their unfinished races, or
A multiplicative of average of driver and circuit average consistencies, i.e. $(1 + m)[\text{avg}(\sigma_d) + \text{avg}(\sigma_c)]/2$, for unfinished race of driver $d$ at circuit $c$, or some other combinations.


No matter which approach to choose, the choice of coefficient $m$ affects the final ranking and could be determined either


Subjectively by looking at the rankings from an expert point of view and selecting the one that makes more sense, or
By trying a range of values like $m \in \{-0.2, -0.1, 0, 0.1, 0.2, .., 0.5\}$ and averaging the consistencies $\sigma_d$ or rankings $R_d$ for each driver $d$. An advantage of this approach would be that when rank of a driver has a low variance over different values of $m$, it implies that driver's rank is insensitive to the choice of $m$, i.e. it is less controversial, and when rank changes a lot with different choices of $m$, the average rank is more controversial.