Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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 基于数据帧中多索引的组头提取_Python_Pandas_Dataframe - Fatal编程技术网

Python 基于数据帧中多索引的组头提取

Python 基于数据帧中多索引的组头提取,python,pandas,dataframe,Python,Pandas,Dataframe,我发现了一个示例,它演示了如何根据多索引的第一级对数据帧进行排序。所以一个初始数据帧看起来像 l = [[1,'A',99],[1,'B',102],[1,'C',105],[1,'D',97],[2,'A',19],[2,'B',14],[2,'C',10],[2,'D',17]] df = pd.DataFrame(l,columns = ['idx1','idx2','col1']) df.set_index(['idx1','idx2'],inplace=True) # assume

我发现了一个示例,它演示了如何根据多索引的第一级对数据帧进行排序。所以一个初始数据帧看起来像

l = [[1,'A',99],[1,'B',102],[1,'C',105],[1,'D',97],[2,'A',19],[2,'B',14],[2,'C',10],[2,'D',17]]
df = pd.DataFrame(l,columns = ['idx1','idx2','col1'])
df.set_index(['idx1','idx2'],inplace=True)

# assume data has been received like this...
print df

           col1
idx1 idx2      
1    A       99
     B      102
     C      105
     D       97
2    A       19
     B       14
     C       10
     D       17
可以在每个
level=1
组中进行排序,以生成:

           col1
idx1 idx2      
1    C      105
     B      102
     A       99
     D       97

2    A       19
     D       17
     B       14
     C       10
我的问题是:如何根据第一级提取每组的第一个
n
元素?

例如,如果
n=2
,则结果将是:

           col1
idx1 idx2      
1    C      105
     B      102

2    A       19
     D       17
           col1
idx1 idx2      
1    C      105
     B      102
2    A       19
     D       17

提前感谢您的考虑和回复。

您只需在排序数据框的
groupby
上添加
head

df.sort_values('col1', ascending=False).groupby('idx1').head(2)
输出: