获取pandas数据帧中每个列值的前n行

时间:2017-12-27 08:59:32

标签: python pandas dataframe group-by pandas-groupby

我有一个数据框

val1    val1     distance
100      200      1.5
100      300       5.2
100      234       3.7
200      100       1.6
200      600       4.8

我希望找到每个val1的前2个距离行。 我&#39,E

每个val1

获得前2个最小距离行

   val1  val2  distance
0   100   200       1.5
2   100   234       3.7
3   200   100       1.6
4   200   600       4.8

这只是一个示例数据集(实际上我有大约1000个唯一的val1) 因此我认为按val1分组并不是一个好主意。

有更快的方法吗?

1 个答案:

答案 0 :(得分:3)

我似乎过度分析了您的问题,但简单的sort_values,后跟groupby + head应该可以满足您的需求。

df.sort_values(['val1', 'distance']).groupby('val1').head(2)

   val1  val2  distance
0   100   200       1.5
2   100   234       3.7
3   200   100       1.6
4   200   600       4.8

如果您需要2个以上,只需将参数更改为head即可。另外,例如,如果您调用head(2)并且只有一行,则返回该行(没有任何问题)。