def remove_end_same_as_start_transitions(df, start_col, end_col):
    """Remove rows corresponding to transitions where start equals end state.

    Millington 2009 used a methodology where if a combination of conditions
    didn't result in a transition, this would be represented in the model by
    specifying a transition with start and end state being the same, and a
    transition time of 0 years.

    AgroSuccess will handle 'no transition' rules differently, so these dummy
    transitions should be excluded.
    """
    def start_different_to_end(row):
        if row[start_col] == row[end_col]:
            return False
        else:
            return True

    return df[df.apply(start_different_to_end, axis=1)]