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)
输出: