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