Python: Использование панд для переформатирования списка списков

Приведен список списков, которые я извлекаю из API. Мне удалось переформатировать эти данные с помощью панд. Однако я пытаюсь получить средние значения этих данных, а затем распечатывать их построчно, а не бок о бок.

{
    "resource": "playergamelog",
    "parameters": {
        "PlayerID": 201939,
        "LeagueID": "00",
        "Season": "2014-15",
        "SeasonType": "Regular Season"
    },
    "resultSets": [
        {
            "name": "PlayerGameLog",
            "headers": [
                "SEASON_ID",
                "Player_ID",
                "Game_ID",
                "GAME_DATE",
                "MATCHUP",
                "WL",
                "MIN",
                "FGM",
                "FGA",
                "FG_PCT",
                "FG3M",
                "FG3A",
                "FG3_PCT",
                "FTM",
                "FTA",
                "FT_PCT",
                "OREB",
                "DREB",
                "REB",
                "AST",
                "STL",
                "BLK",
                "TOV",
                "PF",
                "PTS",
                "PLUS_MINUS",
                "VIDEO_AVAILABLE"
            ],
            "rowSet": [
                [
                    "22014",
                    201939,
                    "0021401229",
                    "APR 15, 2015",
                    "GSW vs. DEN",
                    "W",
                    19,
                    4,
                    10,
                    0.4,
                    2,
                    4,
                    0.5,
                    0,
                    0,
                    0,
                    2,
                    2,
                    4,
                    7,
                    5,
                    0,
                    2,
                    1,
                    10,
                    14,
                    1
                ],
                [
                    "22014",
                    201939,
                    "0021401212",
                    "APR 13, 2015",
                    "GSW vs. MEM",
                    "W",
                    29,
                    6,
                    10,
                    0.6,
                    3,
                    6,
                    0.5,
                    0,
                    0,
                    0,
                    0,
                    4,
                    4,
                    8,
                    1,
                    0,
                    3,
                    2,
                    15,
                    24,
                    1
                ],
                [
                    "22014",
                    201939,
                    "0021401192",
                    "APR 11, 2015",
                    "GSW vs. MIN",
                    "W",
                    35,
                    11,
                    21,
                    0.524,
                    5,
                    11,
                    0.455,
                    7,
                    8,
                    0.875,
                    0,
                    4,
                    4,
                    7,
                    4,
                    0,
                    3,
                    1,
                    34,
                    17,
                    1
                ],
                [
                    "22014",
                    201939,
                    "0021401174",
                    "APR 09, 2015",
                    "GSW vs. POR",
                    "W",
                    35,
                    17,
                    23,
                    0.739,
                    8,
                    13,
                    0.615,
                    3,
                    3,
                    1,
                    1,
                    1,
                    2,
                    10,
                    0,
                    0,
                    4,
                    2,
                    45,
                    21,
                    1
                ],
                [
                    "22014",
                    201939,
                    "0021401156",
                    "APR 07, 2015",
                    "GSW @ NOP",
                    "L",
                    35,
                    9,
                    18,
                    0.5,
                    5,
                    8,
                    0.625,
                    2,
                    2,
                    1,
                    1,
                    5,
                    6,
                    9,
                    1,
                    0,
                    2,
                    3,
                    25,
                    4,
                    1
                ],
                [
                    "22014",
                    201939,
                    "0021401150",
                    "APR 05, 2015",
                    "GSW @ SAS",
                    "L",
                    30,
                    9,
                    17,
                    0.529,
                    5,
                    10,
                    0.5,
                    1,
                    2,
                    0.5,
                    0,
                    4,
                    4,
                    6,
                    1,
                    0,
                    4,
                    2,
                    24,
                    -16,
                    1
                ],
                [
                    "22014",
                    201939,
                    "0021401142",
                    "APR 04, 2015",
                    "GSW @ DAL",
                    "W",
                    27,
                    4,
                    12,
                    0.333,
                    1,
                    4,
                    0.25,
                    2,
                    3,
                    0.667,
                    2,
                    2,
                    4,
                    3,
                    1,
                    0,
                    1,
                    1,
                    11,
                    9,
                    1
                ],
                [
                    "22014",
                    201939,
                    "0021401126",
                    "APR 02, 2015",
                    "GSW vs. PHX",
                    "W",
                    34,
                    10,
                    22,
                    0.455,
                    6,
                    11,
                    0.545,
                    2,
                    2,
                    1,
                    1,
                    7,
                    8,
                    5,
                    0,
                    0,
                    6,
                    3,
                    28,
                    -1,
                    1
                ]
            ]
        }
    ]
}

Мой код распечатывается следующим образом:

FG3A                       3.83
FG3_PCT                    0.34
FTM                        5.50
FTA                        7.17
FT_PCT                     0.78
OREB                       0.75

Когда я получу вышеуказанный ответ от API. Я назначаю

data= response_shots.json()['resultSets'][0]['rowSet'] #stats is a list
# Then I assign/store the headers obtained from this API:
headers_traditional = data['resultSets'][0]['headers'] 
# Then I take list of lists from data and reformat it using the following:
traditional_stats = pd.DataFrame(data, columns=headers_traditional)
# If I want to print the traditional stats with mean I use:
print(traditional_stats.mean())

Но всякий раз, когда это делается, или у меня есть более одного игрока, которого я оцениваю, он выводит результаты следующих игроков ниже. Я предпочел бы, чтобы они печатали рядом или все средние значения по одному игроку на одной строке, а затем переходили к следующему игроку (при этом все еще используя те же заголовки)

1 ответ

Ой, подождите, я только что прочитал ваш комментарий. Это должно быть легко сделать то, что вы хотите:

Случай, когда все игроки находятся в одном DataFrame

averages = df.groupby('Player_ID').mean().unstack()

Случай, когда каждый игрок находится в отдельном DataFrame

Здесь я предполагаю, что вы получаете каждого игрока один за другим, перебирая каждый Player_ID.

averages = pd.DataFrame()
for player in all_player_ids:
    # p_data = get data for Player_ID == player from API
    # df = whatever you do to clean p_data
    averages = averages.append(df.groupby('Player_ID').mean().unstack())

Я предполагаю, что вы используете только данные из p_data['resultSets'], Попробуйте и дайте мне знать.

Другие вопросы по тегам