Иногда при работе с данными в Pandas возникает необходимость группировки данных по определенным критериям с помощью метода groupby()
. Возвращаемым результатом является объект GroupBy
, который, хоть и обладает многими удобными методами для агрегации и трансформации данных, не всегда удобен для дальнейшей работы. В некоторых случаях удобнее конвертировать этот объект обратно в DataFrame.
Рассмотрим пример. Предположим, есть DataFrame, который содержит информацию о клиентах интернет-магазина:
1 2 3 4 5 6 7 | import pandas as pd df = pd.DataFrame({ "Customer" : [ "John" , "Lena" , "John" , "Lena" , "John" ], "City" : [ "New York" , "London" , "London" , "New York" , "New York" ], "Sales" : [ 100 , 200 , 300 , 400 , 500 ] }) |
После группировки данных по имени клиента и городу с подсчетом общей суммы продаж получается следующий результат:
1 | grouped = df.groupby([ "Customer" , "City" ]). sum () |
Результат будет следующим:
Sales
Customer City
John London 300
New York 600
Lena London 200
New York 400
В результате имеем объект GroupBy
, который содержит информацию о суммарных продажах для каждого клиента в каждом городе. Однако, для дальнейшей работы с данными может потребоваться конвертировать этот объект обратно в DataFrame.
Для этого достаточно использовать метод reset_index()
:
1 | df_grouped = grouped.reset_index() |
В результате получаем следующий DataFrame:
Customer City Sales
0 John London 300
1 John New York 600
2 Lena London 200
3 Lena New York 400
Теперь данные представлены в привычном виде DataFrame и с ними можно работать так же, как и с обычным DataFrame.
Добавить комментарий