Как я могу превратить этот DataFrame в DataFrame со средней оценкой по значению индекса? - PullRequest
0 голосов
/ 13 декабря 2018

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

Фактическая информация Я буду намного рецензентами с гораздо большим количеством разновидностей, но я хотел предоставить упрощенную версию.

Любая помощь будет принята с благодарностью.Заранее спасибо.

import pandas as pd
df = pd.DataFrame({"Variety": ['Cabernet', 'Pinot', 'Cabernet', 'Pinot', 'Pinot', 'Cabernet', 'Pinot', 'Cabernet'],
               "Reviewer": ['Bill', 'Sally', 'Bill', 'Sally', 'Bill', 'Sally', 'Bill', 'Sally'],
               "Score": [90, 85, 87, 93, 80, 81, 93, 88]})

Ответы [ 3 ]

0 голосов
/ 13 декабря 2018

Больше похоже на pivot проблему

pd.pivot_table(df,index='Reviewer',columns='Variety',values='Score',aggfunc='mean')
Out[29]: 
Variety    Cabernet      Pinot
Reviewer                      
Bill      87.000000  87.666667
Sally     84.666667  93.000000
0 голосов
/ 13 декабря 2018

Вы можете попробовать:

>>> df.groupby(['Reviewer', 'Variety']).mean()
                   Score
Reviewer Variety
Bill     Cabernet   88.5
         Pinot      86.5
Sally    Cabernet   84.5
         Pinot      89.0
0 голосов
/ 13 декабря 2018

Вы можете группировать, вычислять средние значения и поворачивать результаты:

df.groupby(['Variety', 'Reviewer']).mean() \
                                   .reset_index() \
                                   .pivot(index='Reviewer', columns='Variety')
                Score      
Variety  Cabernet Pinot
Reviewer               
Bill         88.5  86.5
Sally        84.5  89.0

Первая строка рассчитывает средние значения, а последняя строка соответствующим образом изменяет формат данных.Вторая строка необходима для получения вывода .mean() в правильной форме для функции pivot().

Пошаговое :

df.groupby(['Variety', 'Reviewer']).mean()
                  Score
Variety  Reviewer       
Cabernet Bill       88.5
         Sally      84.5
Pinot    Bill       86.5
         Sally      89.0

df.groupby(['Variety', 'Reviewer']).mean().reset_index()
        Variety Reviewer  Score
0  Cabernet     Bill   88.5
1  Cabernet    Sally   84.5
2     Pinot     Bill   86.5
3     Pinot    Sally   89.0

который мы теперь можем преобразовать из 'длинного формата' в 'широкоформатный' с помощью pd.pivot() и получить результат в верхней части этого поста.

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