为什么Pandas的groupby不显示

sqougxex  于 2022-12-16  发布在  其他
关注(0)|答案(4)|浏览(579)

我有一个df像:

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

我想按动物分组。
如果我在笔记本上写:

a = df.groupby(['Animal'])
display(a)

我得到:

<pandas.core.groupby.generic.DataFrameGroupBy object at 0x7f945bdd7b80>

我以为会是这样:

我最终想做的是排序的df的数量动物外观(大象3,猎鹰2等)

b1zrtrql

b1zrtrql1#

因为在groupby之后没有使用任何聚合函数-
a = df.分组(['动物'])显示(a)
校正- a = df.分组(['Animal']).计数()显示(a)
现在,使用count()函数或sort_values()或sum()等之后,您将获得groupby结果

nwwlzxa7

nwwlzxa72#

您需要检查DataFrame.groupby
使用Map器或按一系列列对DataFrame进行分组。
因此,它不是用于按列删除重复值,而是用于聚合。
如果需要删除重复的值,请使用以下命令将其设置为空字符串:

df.loc[df['Animal'].duplicated(), 'Animal'] = ''
print (df)
     Animal  Max Speed
0    Falcon        380
1                  370
2    Parrot         24
3                   26
4  Elephant          5
5                    7
6                    3

如果需要分组:

for i, g in df.groupby(['Animal']):
    print (g)
    
     Animal  Max Speed
4  Elephant          5
5  Elephant          7
6  Elephant          3
   Animal  Max Speed
0  Falcon        380
1  Falcon        370
   Animal  Max Speed
2  Parrot         24
3  Parrot         26
3duebb1j

3duebb1j3#

groupby对象需要一个操作,如max或min。这将导致两个结果:
1.一个规则的Pandas数据框
1.出现一次的分组关键字
显然,您希望保留两个Falcon条目,因此实际上并不希望执行groupby。如果您希望查看隐藏了重复动物值的条目,可以通过将Animal列设置为索引来实现。我这样说是因为您的输入数据框已经按照您希望的顺序显示了。

evrscar2

evrscar24#

使用mask

>>> df.assign(Animal=df['Animal'].mask(df['Animal'].duplicated(), ''))
     Animal  Max Speed
0    Falcon        380
1                  370
2    Parrot         24
3                   26
4  Elephant          5
5                    7
6                    3
>>>

或作为索引:

df.assign(Animal=df['Animal'].mask(df['Animal'].duplicated(), '')).set_index('Animal')
          Max Speed
Animal             
Falcon          380
                370
Parrot           24
                 26
Elephant          5
                  7
                  3
>>>

相关问题