将具有groupby的分组数据转换为数据帧

时间:2019-04-15 15:25:00

标签: python pandas dataframe group-by

我该怎么做才能将分组数据转换为数据框。每个组在一个数据帧中? 我这样做是为了对我的数据进行分组 我写道:

df = pd.DataFrame({'Animal' : ['Falcon', 'Falcon',
                               'Parrot', 'Parrot'],
                   'Max Speed' : [380., 370., 24., 26.]})
df.groupby('Animal')

3 个答案:

答案 0 :(得分:3)

使用dict comprehension

animals = {idx: grp for idx, grp in df.groupby('Animal')}

以“动物”为键进行访问,例如:

animals['Falcon']

[出]

   Animal  Max Speed
0  Falcon      380.0
1  Falcon      370.0

答案 1 :(得分:0)

您可以使用:

dfs = []
for i in df.groupby('Animal'):
    dfs.append(i[1])

print(dfs[0])

   Animal  Max Speed
0  Falcon      380.0
1  Falcon      370.0

print(dfs[1])
   Animal  Max Speed
2  Parrot       24.0
3  Parrot       26.0

答案 2 :(得分:0)

df

   Animal  Max Speed
0  Falcon      380.0
1  Falcon      370.0
2  Parrot       24.0
3  Parrot       26.0

您可以使用.loc而不是groupby来在单独的数据帧中获取期望结果

df1 = df.loc[df['Animal'] == 'Falcon'].reset_index(drop = True)
df1

   Animal  Max Speed
0  Falcon      380.0
1  Falcon      370.0

df2 = df.loc[df['Animal'] == 'Parrot'].reset_index(drop = True)
df2

   Animal  Max Speed
0  Parrot       24.0
1  Parrot       26.0

您可以对多个数据框使用循环

P.S。鹦鹉和猎鹰是鸟;-)