首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在group by之后单独获取计数

如何在group by之后单独获取计数
EN

Stack Overflow用户
提问于 2020-01-05 00:24:15
回答 1查看 31关注 0票数 1

df_n_gender_grp = df_n_gender_prod_cat.groupby(['Gender','prod_cat'])

我的输出如下所示

代码语言:javascript
复制
    Gender  prod_cat
0   M   Books
1   M   Books
2   M   Electronics
3   M   Electronics
4   M   Books
100 F   Electronics
101 F   Electronics
102 F   Electronics
103 F   Electronics
104 F   Electronics
105 F   Clothing
106 F   Clothing
107 F   Clothing
108 F   Clothing

我的预期输出是

按值的降序排列的第一个数据帧

代码语言:javascript
复制
M Books       2
M Electronics 3

按值降序排列的第二个数据帧

代码语言:javascript
复制
F Electronics 5
F Clothing    4
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-05 00:26:56

用于带有MultiIndex GroupBy.sizeSeries.sort_indexSeries

代码语言:javascript
复制
s = df_n_gender_prod_cat.groupby(['Gender','prod_cat']).size().sort_index(ascending=False)
print (s)
Gender  prod_cat   
M       Electronics    2
        Books          3
F       Electronics    5
        Clothing       4
dtype: int64

然后按loc过滤

代码语言:javascript
复制
df1 = s.loc[['F']]
df2 = s.loc[['M']]

对于DataFrame,必须添加Series.reset_index

代码语言:javascript
复制
df1 = s.loc[['F']].reset_index(name='count')
df2 = s.loc[['M']].reset_index(name='count')

或者先添加Series.reset_index

代码语言:javascript
复制
df =  (df_n_gender_prod_cat.groupby(['Gender','prod_cat'])
                           .size()
                           .sort_index(ascending=False)
                           .reset_index(name='count'))
print (df)
  Gender     prod_cat  count
0      M  Electronics      2
1      M        Books      3
2      F  Electronics      5
3      F     Clothing      4

然后按boolean indexing过滤

代码语言:javascript
复制
df1 = df[df['Gender'].eq('F')]
df2 = df[df['Gender'].eq('M')]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59592593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档