从GroupBy对象中的组中获取除第一个k行之外的所有行

时间:2017-08-01 03:47:02

标签: python pandas pandas-groupby

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

有没有直截了当的方法呢?

2 个答案:

答案 0 :(得分:3)

你可以试试这个:

假设:

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)返回的位置:

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

答案 1 :(得分:0)

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