Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pandas-如何从提供的数据框中提取前三行_Python_Pandas_Pandas Groupby - Fatal编程技术网

Python pandas-如何从提供的数据框中提取前三行

Python pandas-如何从提供的数据框中提取前三行,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我的熊猫数据帧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

我的熊猫数据帧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
我想要的是公司代码中的前三个部门。
怎么做?

您必须在此处链接一个groupby。考虑这个例子:

import pandas as pd
import numpy as np

np.random.seed(111)

names = [
    'Robert Baratheon',
    'Jon Snow',
    'Daenerys Targaryen',
    'Theon Greyjoy',
    'Tyrion Lannister'
]

df = pd.DataFrame({
    'season': np.random.randint(1, 7, size=100),
    'actor': np.random.choice(names, size=100),
    'appearance': 1
})

s = df.groupby(['season','actor'])['appearance'].count()
print(s.sort_values(ascending=False).groupby('season').head(1)) # <-- head(3) for 3 values
其中s在4处被剪裁

season  actor             
1       Daenerys Targaryen    2
        Jon Snow              4
        Robert Baratheon      2
        Theon Greyjoy         3
        Tyrion Lannister      4
2       Daenerys Targaryen    4
        Jon Snow              3
        Robert Baratheon      1
        Theon Greyjoy         5
        Tyrion Lannister      3
3       Daenerys Targaryen    2
        Jon Snow              1
        Robert Baratheon      6
        Theon Greyjoy         3
        Tyrion Lannister      3
4 ...

当有简单的代码时,为什么您希望事情变得复杂:

Z = df.groupby('country_code')['sector'].value_counts().groupby(level=0).head(3).sort_values(ascending=False).to_frame('counts').reset_index()

Z

@RahulAgarwal-共享用于获取输出的内容。考虑到这是一个系列,我尝试了:grouped.sort_valuesaxis=0,ascending=False这会改变组的输出请看:尝试这个:grouped=df[df['X']='venture'&df['company_code'].isin['USA','IND','GBR']].groupby['company__code','main_扇区']['X_扇区'].count.reset_indexname='count'.sort_values['count',['count',',上升=False这是有效的。但它给出了计数的排序顺序。这是一部分。第二部分是从每个小组安排中选出前两名。我很高兴能提供帮助。快乐编码@AntonvBR,很好的例子+1.
Z = df.groupby('country_code')['sector'].value_counts().groupby(level=0).head(3).sort_values(ascending=False).to_frame('counts').reset_index()

Z