答案 0 :(得分:4)
假设你有以下DF:
In [97]: df
Out[97]:
Time
waller poster
1 11 2
22 3
33 1
44 1
55 1
2 33 1
3 11 1
22 1
33 1
44 2
55 1
66 3
<强>解决方案:强>
In [98]: (df.sort_index(ascending=[1,0])
...: .groupby(level=0, as_index=False)
...: .apply(lambda x: x.head(5) if len(x) >= 5 else x.head(0))
...: .reset_index(level=0, drop=True)
...: )
...:
Out[98]:
Time
waller poster
1 55 1
44 1
33 1
22 3
11 2
3 66 3
55 1
44 2
33 1
22 1
答案 1 :(得分:1)
g = df.groupby(level=0)
def lrgst(df):
if len(df) >= 5:
return df.nlargest(5, 'Time')
pd.concat([lrgst(d) for _, d in g])
答案 2 :(得分:0)
要对海报列进行排序,您可以使用sort level
df.sortlevel(1, ascending=False)
要获得前n个结果,您可以使用.head
df.head(5)
要删除记录,您可以参考相应的级别:
df = df[df.index.levels[1] > 5]
如果这有帮助,请告诉我。很难说这是否能用有限的信息解决您的问题