Support

Is it guaranteed that "for each feature, there is a row in rows observing that feature". In general `while` is dangerous. It would be safer to

    ...
    for row in rows:
        ...add row to dense row...
        if all(x is not None for x in dense_row):
            return dense_row
    raise ValueError('feature was not observed in any row')