【发布时间】:2014-03-25 19:35:04
【问题描述】:
我有一个如下所列的数据框:
In []: dff = pd.DataFrame({'A': np.arange(8),
'B': list('aabbbbcc'),
'C':np.random.randint(100,size=8)})
我根据列 B 进行了分组
In []: grouped = dff.groupby('B')
现在,我想根据'C' 列中的值差异过滤dff。例如,如果C 列中组内任意两点之间的差异大于阈值,则删除该行。
如果dff 是:
A B C
0 0 a 18
1 1 a 25
2 2 b 56
3 3 b 62
4 4 b 46
5 5 b 56
6 6 c 74
7 7 c 3
然后,10 的阈值 C 将产生一个像这样的决赛桌:
A B C
0 0 a 18
1 1 a 25
2 2 b 56
3 3 b 62
4 4 b 46
5 5 b 56
这里分组的类别 c(小写字母)被删除,因为两者之间的差大于 10,但类别 b 的所有行都完好无损,因为它们都在 10 以内。
【问题讨论】:
-
但是 62 - 46 > 10 那么为什么 b 中的某些行没有被丢弃?
-
但 62 与 b 56 中的另一个值相差 10 以内。
-
那么如果你有 3、4、23、24 个,你会保留它们吗?
-
是的,这是正确的。
标签: python python-2.7 pandas