如何按特定组的行数过滤数据集?
How to filter dataset by number of rows of specific group?
我有一个数据集:
id value
a1 14
a1 2
a1 34
a1 11
a1 78
b1 11
b1 9
b1 6
我想按每个组的行数过滤该数据集,使其不超过 4。因此所需的输出将是:
id value
a1 14
a1 2
a1 34
a1 11
b1 11
b1 9
b1 6
怎么做?
您可以使用 groupby.head
:
out = df.groupby('id').head(4)
如果您有 pandas >=1.4.0,那么您也可以使用 groupby.nth
进行切片:
out = df.groupby('id').nth[:4]
输出
id value
0 a1 14
1 a1 2
2 a1 34
3 a1 11
5 b1 11
6 b1 9
7 b1 6
我有一个数据集:
id value
a1 14
a1 2
a1 34
a1 11
a1 78
b1 11
b1 9
b1 6
我想按每个组的行数过滤该数据集,使其不超过 4。因此所需的输出将是:
id value
a1 14
a1 2
a1 34
a1 11
b1 11
b1 9
b1 6
怎么做?
您可以使用 groupby.head
:
out = df.groupby('id').head(4)
如果您有 pandas >=1.4.0,那么您也可以使用 groupby.nth
进行切片:
out = df.groupby('id').nth[:4]
输出
id value
0 a1 14
1 a1 2
2 a1 34
3 a1 11
5 b1 11
6 b1 9
7 b1 6