如何根据组内值的差异过滤pandas中的groupby对象?

2024-06-16 12:57:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,如下所示:

In []: dff = pd.DataFrame({'A': np.arange(8),
                           'B': list('aabbbbcc'),
                           'C':np.random.randint(100,size=8)})

我根据列B分组

^{pr2}$

现在,我想根据^{{cd3>}列中的值的差异来筛选^{cd2>}。例如,如果组内的任何两点在^{cd4>}列中的任何两点之间的差异大于阈值,请删除该行。

如果^{cd2>}为:

^{pr3}$

然后,对于^{cd4>}的^{cd6>}的阈值将生成最后一个表,如:

^{pr4}$

这里,c类(小写字母)被删除,因为两者的差值大于10,但b类保持所有行完整,因为它们都在10行之间。


Tags: 数据indataframenp阈值random差异list
1条回答
网友
1楼 · 发布于 2024-06-16 12:57:24

我想我会在纽比做艰苦的工作:

In [11]: a = np.array([2, 3, 14, 15, 54])

In [12]: res = np.abs(a[:, np.newaxis] - a) < 10  # Note: perhaps you want <= 10.

In [13]: np.fill_diagonal(res, False)

In [14]: res.any(0)
Out[14]: array([ True,  True,  True,  True, False], dtype=bool)

您可以将其包装在一个函数中:

^{pr2}$

相关问题 更多 >