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我已经编辑了这个问题,所以它会更清晰。太好了。这比我想象的要简单。谢谢你。这比我想象的要简单。谢谢