Python 在Dataframe中显示多列,但按分组并仅计数一列

Python 在Dataframe中显示多列,但按分组并仅计数一列,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个类似于以下内容的数据帧: df: facility, location, nickname factory, floor, flr office, reception, rec office, execsuite, es office, cubicle, cub training, conference,conf 我想要的输出是一个分组列表,其中包含“facility”计数和显示的其他列的所有值 facility, count, locati

我有一个类似于以下内容的数据帧:

df:
facility,  location,  nickname
factory,   floor,     flr
office,    reception, rec
office,    execsuite, es
office,    cubicle,   cub
training,  conference,conf
我想要的输出是一个分组列表,其中包含“facility”计数和显示的其他列的所有值

facility,  count,  location,   nickname
factory,   1,      floor,      flr
office,    3,      reception,  rec
                   execsuite,  es
                   cubicle,    cub
training,  1,      conference, conf
以下输出也将起作用:

facility,  location,  nickname,  count
factory,   floor,     flr,       1
office,    reception, rec,       3
           execsuite, es,        3
           cubicle,   cub,       3
training,  conference,conf,      1
我遇到的问题是,在不执行合并的情况下,包括counted值和“groupby”值之外的其他列。以下是我尝试过的一些例子:

(1)  df['x'] = df.groupby('facility').apply(lambda x: df['facility'].count())
“x”列在所有值上返回为NAN

(2)  df.groupby(['facility']).agg({'location': 'nunique'})
此处正确返回计数,但不显示“位置”和“昵称”列。尝试将这些添加到groupby中时,会通过过度聚合将每个的计数设置回“1”

(3)  df.groupby(['facility', 'location']).count()
同样,由于我按两列进行了分组,这是一种过度聚合——这让我在每个地方都有一列

(4) df.groupby('facility')['facility','location'].count()
不显示列文本-仅计数


看起来我需要的是一个分组,并显示额外的列。我不确定在没有合并的情况下执行此操作的语法。

您可以按
facility
分组,并设置为index
facility
count

df['count'] = df.groupby('facility')['facility'].transform('size')
print(df.set_index(['facility', 'count']))
输出

                  location nickname
facility count                     
factory  1           floor      flr
office   3       reception      rec
         3       execsuite       es
         3         cubicle      cub
training 1      conference     conf