当我在AS_INDEX设置为FALSE的数据帧上运行GROUPBY时,COUNT似乎根本不起作用.例如,

import pandas as pd

word_list = ['a', 'b', 'c', 'a', 'c', 'c', 'b', 'a', 'c']

df = pd.DataFrame(word_list, columns=['word'])
as_counts = df.groupby('word', as_index=False).count()
print(as_counts)
  word
0    a
1    b
2    c

如果您try 相同的.size(),如

as_counts = df.groupby('word', as_index=False).size()

它的工作方式与预期一致

  word  size
0    a     3
1    b     2
2    c     4

这两个函数之间的什么差异可以解释这种输出差异?

This post提出了一个完全不同的问题,因为在本例中,帧既不是多索引,也不是寻求维护非唯一索引.同样,这篇文章中的答案都没有解决这个问题.

推荐答案

groupby.count用于处理分组列以外的列,而groupby.size用于输出a single个新列(命名为SIZE),而与现有列的数量无关.

这是有意义的,因为count取决于NA状态,而101 is always constant在一个组内(行数,与值无关).

这一点很容易通过添加几个虚拟列来查看:

df.assign(dummy1=1, dummy2=None).groupby('word', as_index=False).count()

# as many output columns as the input columns (minus grouper)
# only the non NA values are counted
  word  dummy1  dummy2
0    a       3       0
1    b       2       0
2    c       4       0

VS:

df.assign(dummy1=1, dummy2=None).groupby('word', as_index=False).size()

# grouper columns + ONE "size" column
  word  size
0    a     3
1    b     2
2    c     4

这一点实际上已在文档中明确说明:

DataFrameGroupBy.Size()

返回:

DataFrame或系列

每组中的行数as a Series if as_index is True or a DataFrame if as_index is False.

所以回到最初的示例,groupby.counts什么也不输出,因为没有可使用的列(分组列被排除在聚合之外,除非从DataFrameGroupBy对象中专门切片).


workaround

如其他地方所述,如果要对其中一个分组列进行计数,解决方法是显式地对其进行切片:

df.groupby('word', as_index=False)['word'].count()

   word
0     3
1     2
2     4

有趣的是,您可以多次对其进行切片,并在输出中获得相同数量的列:

df.groupby('word', as_index=False)[['word', 'word']].count()

   word  word
0     3     3
1     2     2
2     4     4

Python相关问答推荐

如何在箱形图中添加绘制线的传奇?

try 在树叶 map 上应用覆盖磁贴

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

Pandas - groupby字符串字段并按时间范围 Select

如何列举Pandigital Prime Set

用合并列替换现有列并重命名

C#使用程序从Python中执行Exec文件

如何从在虚拟Python环境中运行的脚本中运行需要宿主Python环境的Shell脚本?

计算组中唯一值的数量

如何从.cgi网站刮一张表到rame?

在pandas中使用group_by,但有条件

Django RawSQL注释字段

需要帮助重新调整python fill_between与数据点

为什么\b在这个正则表达式中不解释为反斜杠

如何在Python中使用Pandas将R s Tukey s HSD表转换为相关矩阵''

为用户输入的整数查找根/幂整数对的Python练习

Python Mercury离线安装

如何编辑此代码,使其从多个EXCEL文件的特定工作表中提取数据以显示在单独的文件中

具有不同坐标的tkinter canvs.cocords()和canvs.moveto()

为什么内置的sorted()对于一个包含降序数字的列表来说,如果每个数字连续出现两次,会变慢?