Как я могу преобразовать группу по сериям в фрейм данных?

#python #pandas #group-by

#python #pandas #группировка по

Вопрос:

У меня есть этот фрейм данных:

 import pandas as pd
df = pd.DataFrame( { 
"Name" : ["Bob", "Bryan", "Bob", "Bryan" , "Bryan"] , 
"Value" : [10,20,15,50,45] } )
  

Затем я получил минимальное значение на человека:

 df1 = df.groupby(["Name"])["Value"].min()
  

Это довольно просто. Тем не менее, я хочу продолжать работать с фреймами данных, но df1 — это серия:

 type(df1)
  

Как я могу снова преобразовать его в фрейм данных?

Ответ №1:

Используйте параметр as_index=False в DataFrame.groupby :

 df1 = df.groupby(["Name"],as_index=False)["Value"].min()
  

Или добавить Series.reset_index :

 df1 = df.groupby(["Name"])["Value"].min().reset_index()
  

 print (df1)
    Name  Value
0    Bob     10
1  Bryan     20
  

Ответ №2:

Также вы можете использовать agg(), который возвращает фрейм данных.

 df1 = df.groupby("Name").agg({'Value': 'min'}).reset_index()