python - 分组计数。为什么每列?

标签 python pandas

我经常需要知道 Pandas 数据框中每个组中有多少条目。以下代码执行此操作,但它为我的数据框中的每一列返回一个值。

df.groupby(['A', 'B', 'C']).count()

也就是说,如果我有,请说 20 列(其中 ABC 是三个),它会返回 17 计数,每个组中的计数都是相同的(至少每次我都这样做)。

  1. 这背后的理由是什么?
  2. 有什么方法可以将计数限制为仅一列吗? (或者让它每组只返回一个值?)
  3. 这会以某种方式加快计数速度吗?

方法 dataFrameGroupBy.count 似乎没有参数来指定在哪些列上进行计数(我也无法在 API ref 上找到它)

最佳答案

groupby(...).count() 返回每列中非空值的计数。因此每列的情况可能会有所不同。

示例:

>>> df
   jim  joe  jolie
0    4  NaN      4
1    8    0    NaN
>>> df.groupby('jim').count()
     joe  jolie
jim            
4      0      1
8      1      0

.groupby(...).size() 返回每个组的大小

关于python - 分组计数。为什么每列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26041818/

相关文章:

python - 最后导入的文件会覆盖以前文件中的语句。指定导入变量的更好方法?

Python min() 显然不接受整数列表

python - Pandas:如何按日期时间列进行分组,仅使用时间并丢弃日期

python - 程序忽略 if 语句,并在 False 时打印 True

python - 替换 Python 中字段名称中的特殊字符

python - 根据列列表值过滤 pandas 数据框

python 我想用日期时间设置索引数据帧

python - 将数据框中的行的一部分向右移动?

python - Pandas 日期时间索引的算术运算

python - 创建一个循环来找出前 20 天内的销售数量