def _player_n_frame(base_df, n):
    """Create a dataframe of player level results for the nth player in a game frame
    
    This just gets called in player_level_df, doesn't need to be called directly

    Properties
    ----------
    base_df: pd.DataFrame
        game level dataframe
    n: int
        the player number to extract
    
    Returns
    -------
    player_n_df: pd.DataFrame
        The nth player's results
    """
    player_dict = {
        f"player_{n}_faction": "faction",
        f"player_{n}_vp_margin": "vp_margin",
    }
    player_n_df = (
        base_df.rename(columns=player_dict)
        .reindex(columns=["faction", "vp_margin"])
        .assign(player_num=n)
        .reset_index()
        .rename(columns={"index": "game_name"})
    )
    return player_n_df