python - 在 Pandas Dataframe 中显示多列,但分组并仅计算一列

标签 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,  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

我遇到的问题是包含计数值和“分组依据”值之外的其他列而不执行合并。以下是我尝试过的一些示例:

(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进行分组,并将其设置为索引facilitycount:

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

关于python - 在 Pandas Dataframe 中显示多列,但分组并仅计算一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59165706/

相关文章:

python - 总结 range() 中的所有整数

python - 自动生成的名称为字母而不是数字

python - Django:如何一次更新多个记录?

python - Crontab 正在运行同一 .py 的多个实例

python - 如何在使用 celery-beat 完成上一个任务后 5 分钟内运行任务?

python - 将一个元素添加到Python字典中就是多次添加该元素

python - 根据现有列的值向 pandas 数据框添加新列

python - 给定元组列表查找区间

python - Django 将模型实例传递给略有不同的模型

python - 类型错误 : Inheritance a class from URL is forbidden