Python 如何创建具有最小值计数的子DatafFrame

Python 如何创建具有最小值计数的子DatafFrame,python,pandas,indexing,pandas-groupby,Python,Pandas,Indexing,Pandas Groupby,我有一个数据帧,格式如下: a b Class 0 1 10 A 1 2 12 A 2 3 2 A 3 12 5 B 4 5 7 A 5 6 8 B 6 7 17 A 7 1 1 B 8 5 0 B 从这个DataFrame中,我想得到另一个DataFrame,它至少有N行用于列Class的每个值(这里至少有N行来自Class'a'和N行Class

我有一个
数据帧
,格式如下:

    a   b Class
0   1  10     A
1   2  12     A
2   3   2     A
3  12   5     B
4   5   7     A
5   6   8     B
6   7  17     A
7   1   1     B
8   5   0     B
从这个
DataFrame
中,我想得到另一个
DataFrame
,它至少有N行用于列
Class
的每个值(这里至少有N行来自Class'a'和N行Class'B)

新的
DataFrame
应包括从
DataFrame
末尾开始到满足条件的行的所有行

在上述N=2的数据中,我希望得到:

   a   b Class
4  5   7     A
5  6   8     B
6  7  17     A
7  1   1     B
8  5   0     B

谢谢。

您可以按类提取最后2项以及结果的第一个索引

然后从这一点开始在原始数据帧上建立索引

idx = df.groupby('Class').tail(2).index[0]

res = df[idx:]

print(res)

   a   b Class
4  5   7     A
5  6   8     B
6  7  17     A
7  1   1     B
8  5   0     B

您可以按类和结果的第一个索引提取最后2项

然后从这一点开始在原始数据帧上建立索引

idx = df.groupby('Class').tail(2).index[0]

res = df[idx:]

print(res)

   a   b Class
4  5   7     A
5  6   8     B
6  7  17     A
7  1   1     B
8  5   0     B

为什么这里有3次
B
?不需要
df.groupby('Class').tail(2)
?我希望所有的行都从数据帧的末尾开始,直到所有的类都至少有N行,但是为什么会有3次
B
?因为只有在索引4中,我会从数据帧的末尾开始计数,至少有2个“A”行。所以我要切片的索引是4@jezrael我对问题进行了编辑,以便更清楚。为什么这里有3次
B
?不需要
df.groupby('Class').tail(2)
?我希望所有的行都从数据帧的末尾开始,直到所有的类都至少有N行,但是为什么会有3次
B
?因为只有在索引4中,我会从数据帧的末尾开始计数,至少有2个“A”行。所以我要切片的索引是4@jezrael我已经编辑了这个问题,所以它会更清晰。太好了。这比我想象的要简单。谢谢你。这比我想象的要简单。谢谢