首页 > 解决方案 > Series.groupby(column) 等效于 DataFrame.groupby(column) 的语法是什么?

问题描述

我正在尝试对一个系列执行 groupby,按值分组。例如计数()。认为:

ser = pd.Series({'a': 'aa', 'b': 'bb', 'c': 'ff', 'd': 'ff'})
ser.name= 'foo'
ser.index.name= 'idx'

所以ser是:

idx
a    aa
b    bb
c    ff
d    ff
Name: foo, dtype: object

我可以做:

>collections.Counter(ser)
Counter({'aa': 1, 'bb': 1, 'ff': 2})

或者:

>print(pd.DataFrame(ser).reset_index().groupby('foo').count())
     idx
foo     
aa     1
bb     1
ff     2

我的问题是我可以/我如何只使用 做同样的事情Series.groupby(?????).count()

编辑:谢谢你们俩的回答,今天要学习两个新东西:)+1 !我将接受@jezrael 的答案,因为它更准确,而且它允许我解决我简化以解决问题的更复杂的问题(除了计算它们之外,还获取所有实例的列表):

>ser.groupby(ser).apply(lambda df:set(df.index))
foo
aa       {a}
bb       {b}
ff    {c, d}
Name: foo, dtype: object

标签: pythonpandaspandas-groupby

解决方案


groupbyIIUC,当你处理 a 时,没有什么可以应用的series,所以你可以计算它的值。

这行吗?

ser.value_counts()

ser.value_counts()
 
ff    2
aa    1
bb    1

推荐阅读