python - 获取 pandas DataFrame 中每个组的前 N ​​个最大行

标签 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 个距离行。 我是

对于每个 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 分组不是一个好主意。

有没有更快的方法?

最佳答案

看来我过度分析了你的问题,但是一个简单的 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) 并且只有一行,则返回该行(没有任何问题)。

关于python - 获取 pandas DataFrame 中每个组的前 N ​​个最大行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47989173/

相关文章:

python - 在 python pandas 中构造一个共现矩阵

python - 属性错误: module 'pandas.compat' has no attribute 'iteritems'

python - 从linux中的 Pandas 数据框列中减去日期

python - 根据一些特定的列合并数据,pandas

python - 如何使另一个函数中的函数同时退出这两个函数?

python - 合并排序算法 - 计数倒置

java - 提供默认哈希和相等方法的语言有哪些优点/缺点?

Python Pandas 数据框 : filter columns using a list?

html - 显示以屏幕宽度 [Shiny] 换行的值向量

python - 关于在 python 中根据导入组织小项目的正确方法的问题