Итерация по первому уровню groupby для получения второго уровня данных - PullRequest
1 голос
/ 26 мая 2019

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

Вот что у меня есть:

user_group = past_year.groupby(['User','month'])['Score'].mean()
for group in user_group:
    #I want to be able to access all months and mean scores for the current user here

1 Ответ

0 голосов
/ 26 мая 2019

Если я понимаю, что вы пытаетесь сделать правильно, использование многоуровневого индекса может сработать, но это неуклюже:

import pandas as pd 
df = pd.DataFrame({"User" : ["User1", "User1", "User1", "User1", "User1", "User1"], "Month" : ["Jan", "Jan", "Jan", "Feb", "Feb", "Feb"], "Score" : [5,10,30,30,30,40]})

users = df.User.unique()
months = df.Month.unique()

df =df.set_index(["User", "Month"])

for i in users:
    for x in months:
        print(df.loc[i].loc[x].Score.mean())

Затем измените оператор печати в зависимости от того, что вы хотите сделать с конечным результатом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...