我有这样的理由:
data = [(1,"YES", 54.234),
(1,"YES", 1.0001),
(2,"YES", 4.234),
(3,"YES", 0.234)]
dtypes = [("GROUPID", np.int),
("HASNEAR", "|S255"),
("DISTANCE", np.float64)]
array = np.array(data, dtype=dtypes)
有没有一种方法可以将数据分组,并在新数组中只返回每个组中的最小距离?在
在我的示例中,我有4行。在group和return minimum之后,我希望只返回3行。每个GROUPID值一个。在
如果numpy数组不是正确的工具,你能在Pandas中这样做吗?在
谢谢你
正如其他人所说明的,您可以在pandas中实现这一点,但它是一个相对较重的抽象,它引入了您可能感兴趣或可能不感兴趣的各种其他复杂性。在
numpy_indexed包独立地专门处理这类操作:
创建pandas数据帧,按GROUPID分组,按
min()
聚合:在加州大学你可以做到:
现在您可以在GROUPID列上
^{pr2}$groupby
,调用idxmin
返回感兴趣列的最小值的索引,并使用它来过滤原始数据:您可以看到
idxmin
返回的是最小值的索引:您可以通过调用
.values
将其转换回numpy数组:相关问题 更多 >
编程相关推荐