从 GroupBy 对象中的组中获取除前 k 行以外的所有行

Getting all but the first k rows from a group in a GroupBy object

我有一个 pandas GroupBy 对象。我正在使用 head(k) 将每个组的前 k 个元素提取到数据框中,我还想提取补码。每个组的大小都不固定。

有什么简单的方法吗?

是的,您可以使用 reset_index() 方法重新索引新数据帧。

你可以试试这个:

鉴于:

df = pd.DataFrame({'ID':['a','b','b','c','c','c','d','d','d','d'],
             'Data':np.arange(10)})

   Data ID
0     0  a
1     1  b
2     2  b
3     3  c
4     4  c
5     5  c
6     6  d
7     7  d
8     8  d
9     9  d

df[~df.index.isin(df.groupby('ID').head(2).index)]

输出:

   Data ID
5     5  c
8     8  d
9     9  d

其中 df.groupby('ID').head(2) returns:

   Data ID
0     0  a
1     1  b
2     2  b
3     3  c
4     4  c
6     6  d
7     7  d