Python 根据列中的值,为每个值提取前N行
在python中使用pandas或其他函数 我想为每个“名称”提取前3行(基于“权重”值): 例如,我有这样的数据Python 根据列中的值,为每个值提取前N行,python,pandas,Python,Pandas,在python中使用pandas或其他函数 我想为每个“名称”提取前3行(基于“权重”值): 例如,我有这样的数据 df = row weight name size1 size2 1 10 A 4 4 2 7 A 2 7 3 5 A 9 7 4 5 A 2 2 5 2 A 6 3 1 7 B 3 4 2 6 B 8 3 3 5 B 4 3 4 3 B 4 5 5 2 B 2 1 我希望我的输出如下所示
df =
row weight name size1 size2
1 10 A 4 4
2 7 A 2 7
3 5 A 9 7
4 5 A 2 2
5 2 A 6 3
1 7 B 3 4
2 6 B 8 3
3 5 B 4 3
4 3 B 4 5
5 2 B 2 1
我希望我的输出如下所示:
row weight name size1 size2
1 10 A 4 4
2 7 A 2 7
3 5 A 9 7
1 7 B 3 4
2 6 B 8 3
3 5 B 4 3
或
试试这个:
In [36]: df.groupby('name', group_keys=False).apply(lambda x: x.nlargest(3, 'weight'))
Out[36]:
row weight name size1 size2
0 1 10 A 4 4
1 2 7 A 2 7
2 3 5 A 9 7
5 1 7 B 3 4
6 2 6 B 8 3
7 3 5 B 4 3
In [36]: df.groupby('name', group_keys=False).apply(lambda x: x.nlargest(3, 'weight'))
Out[36]:
row weight name size1 size2
0 1 10 A 4 4
1 2 7 A 2 7
2 3 5 A 9 7
5 1 7 B 3 4
6 2 6 B 8 3
7 3 5 B 4 3