在 Python 中按列分组以获得总计数

Posted

技术标签:

【中文标题】在 Python 中按列分组以获得总计数【英文标题】:Grouping By A Column For A Total Count in Python 【发布时间】:2019-11-26 18:30:07 【问题描述】:

我正在为 Coursera 上的数据科学简介课程解决一个问题,我正在努力将数据添加到数据框中的列中。

这是我正在使用的数据集:

    SUMLEV  REGION  DIVISION    STATE   COUNTY  STNAME  CTYNAME     
1   50      3       6           1       1       Alabama Autauga County  
2   50      3       6           1       3       Alabama Baldwin County  
3   50      3       6           1       5       Alabama Barbour County  
4   50      3       6           1       7       Alabama Bibb County 

我要做的是插入一个名为 TotalCounties 的列,其中包含按州划分的县总数作为最后一列。我在 SQL 中做过类似的事情,但在 Python 中似乎不太一样。

我尝试了下面的代码,但该列最终显示为 NaN 而不是我想要的数字。

   counties_only_df = census_df[census_df['SUMLEV'] == 50]
   x = counties_only_df.groupby('STNAME').count()['SUMLEV']
   counties_only_df['Total Counties'] = x

我想在新创建的列中显示一个数字而不是 NaN。

【问题讨论】:

这就是你的意思counties_only_df['Total Counties'] = counties_only_df.groupby('STNAME').transform('count')?或者你想对县列做点什么? 你能包含一个明确的期望输出吗? @BenPap 我实际上想要一些带有州名的东西,因为州名在表中每个县的数据集中重复。 【参考方案1】:

尝试:

df['Total Counties'] = df.groupby('STNAME')['STNAME'].transform('count')

将“df”更改为您的 DataFrame 名称

【讨论】:

太棒了!那行得通!谢谢!你能解释一下你为什么做 groupby('STNAME')['STNAME'] 吗?

以上是关于在 Python 中按列分组以获得总计数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pandas 数据框中按列值分组

两个查询:按列分组、减去相似列、显示总计

如何在 Hive 中按列分组使用聚合函数

我可以在 OBIEE 分析报告中按列创建新的分组吗?

在python中按时间分组和绘制数据

在python中按特定年份对数据进行分组