首页 > 解决方案 > 我如何计算有多少项目出现一次、两次、三次……?

问题描述

我有一个数据框df:

number 
123
123
123
456
456
789
111
111
111
...

我想知道有多少项出现 X 次。

输出应该是这样的:

X times | count
3       | 2    (123 + 111 appear 3 times and are 2 numbers)
2       | 1    (456 appears 2 times but only 1 number)
1       | 1    (111 appear 1 time but only 1 number)

标签: pythonpandascount

解决方案


使用双Series.value_counts

df1 = (df['number'].value_counts()
                   .value_counts()
                   .rename_axis('X times')
                   .reset_index(name='count'))
print (df1)
   X times  count
0        3      2
1        2      1
2        1      1

替代双GroupBy.size

s = df.groupby('number').size()
df1 = (s.groupby(s).size()
        .rename_axis('X times')
        .reset_index(name='count'))
print (df1)
   X times  count
0        1      1
1        2      1
2        3      2

或组合,谢谢@Ch3steR:

df1 = (df.groupby('number')
         .size()
         .value_counts()
         .rename_axis('X times')
         .reset_index(name='count'))

推荐阅读