【发布时间】:2021-03-30 04:13:08
【问题描述】:
我的 pandas 数据框 df 可能会产生如下结果:
grouped = df[(df['X'] == 'venture') & (df['company_code'].isin(['TDS','XYZ','UVW']))].groupby(['company_code','sector'])['X_sector'].count()
这个的输出如下:
company_code sector
TDS Meta 404
Electrical 333
Mechanical 533
Agri 453
XYZ Sports 331
Electrical 354
Movies 375
Manufacturing 355
UVW Sports 505
Robotics 345
Movies 56
Health 3263
Manufacturing 456
Others 524
Name: X_sector, dtype: int64
我想得到的是公司代码中的前三个部门。 有什么办法呢?
【问题讨论】:
-
@RahulAgarwal - 分享了用于获取输出的内容。鉴于它是一个系列,我尝试: grouped.sort_values(axis=0, ascending=False) 这会改变 group 的输出
-
试试这个:grouped = df[(df['X'] == 'venture') & (df['company_code'].isin(['USA','IND','GBR ']))].groupby(['company_code','main_sector'])['X_sector'].count().reset_index(name='count').sort_values(['count'],ascending=False)
-
这行得通。但它给出了计数的排序顺序。这是一部分。第二部分是从这些组排列中选择前两个。
标签: python pandas pandas-groupby