Python Pandas преобразует объект GroupBy в DataFrame

вопрос

есть два вопроса, которые выглядят похожими, но они не тот же вопрос:здесь и здесь. Они оба называют метод GroupBy, например count() или aggregate(), который, как я знаю, возвращает DataFrame. Я спрашиваю, как преобразовать GroupBy (класс pandas.core.groupby.DataFrameGroupBy) объект сам в DataFrame. Я проиллюстрирую это ниже.

пример

построить пример DataFrame as следует.

data_list = []
for name in ["sasha", "asa"]:
    for take in ["one", "two"]:
        row = {"name": name, "take": take, "score": numpy.random.rand(), "ping": numpy.random.randint(10, 100)}
        data_list.append(row)
data = pandas.DataFrame(data_list)

выше DataFrame должен выглядеть следующим образом (с разными номерами, очевидно).

    name  ping     score take
0  sasha    72  0.923263  one
1  sasha    14  0.724720  two
2    asa    76  0.774320  one
3    asa    71  0.128721  two

что я хочу сделать, это сгруппировать по столбцам "name" и "take" (в этом порядке), чтобы я мог получить DataFrame индексируется мультииндексом, построенным из столбцов "name" и "take", как показано ниже.

               score  ping
 name take        
sasha  one  0.923263    72
       two  0.724720    14
  asa  one  0.774320    76
       two  0.128721    71

как этого достичь? Если я это сделаю grouped = data.groupby(["name", "take"]), потом grouped это pandas.core.groupby.DataFrameGroupBy экземпляра. Как конвертировать grouped до DataFrame экземпляра?

1 ответов


вам нужно set_index:

data = data.set_index(['name','take'])
print (data)
            ping     score
name  take                
sasha one     46  0.509177
      two     77  0.828984
asa   one     51  0.637451
      two     51  0.658616