如何从值列表中选择具有const差异的值子集?

CIsForCookies

我有一个带有值列表的数据框:

In [24]: data
Out[24]: 
[{'value': 1.2},
 {'value': 2.2},
 {'value': 1.8},
 {'value': 2.0},
 {'value': 1.1},
 {'value': 3.9},
 {'value': 0.0},
 {'value': 1.5},
 {'value': 2.5},
 {'value': 1.6},
 {'value': 2.3},
 {'value': 3.0},
 {'value': 3.3},
 {'value': 0.5},
 {'value': 4.0},
 {'value': 3.4},
 {'value': 0.8},
 {'value': 2.5},
 {'value': 2.1},
 {'value': 3.0}]

In [25]: df = pd.DataFrame(data=data)
In [26]: df
Out[26]: 
    value
0     1.2
1     2.2
2     1.8
3     2.0
4     1.1
5     3.9
6     0.0
7     1.5
8     2.5
9     1.6
10    2.3
11    3.0
12    3.3
13    0.5
14    4.0
15    3.4
16    0.8
17    2.5
18    2.1
19    3.0

现在,我要通过以下方式选择此数据框的子集:

  1. 选择最大值-足够容易- df['value'].max()
  2. 查找下一个N行,该行的值最接近最后一个值-0.2

即-最大值是4.0,所以我想找到值最接近的行4.0 - 0.2 = 3.8,即第5行。接下来,我想找到具有value的行4.0 - (0.2 * 2) = 3.6,所以这将是第15行(带有3.4),依此类推(向上)至N次)

有没有一种快速的方法可以做到这一点?

预期输出:

value  
0 4.0
1 3.9
2 3.4

我将使用的实际数据应更均匀地分布,因此在每个预期值(即3.8、3.6、3.4左右)附近会有许多接近值(例如3.44、3.38、3.41)

广晃

假设分辨率(0.2)预期比最接近的距离大很多,我相信您可以使用merge_asof

step, N = 0.2, 3

maxval = df['value'].max()

(pd.merge_asof(df.sort_values('value'),
                      pd.DataFrame({'ref':maxval-np.arange(N)*step}).sort_values('ref'),
                      left_on='value',
                      right_on='ref',
                      direction='nearest')
   .assign(dist=lambda x: x['ref'].sub(x['value']).abs())
   .sort_values('dist')
   .drop_duplicates('ref')
)

输出:

    value  ref  dist
19    4.0  4.0   0.0
18    3.9  3.8   0.1
17    3.4  3.6   0.2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从具有重复值的列表中选择不同的记录?

如何从行的子集中选择具有最小值的列的行?

如何使用具有int值的变量从列表中选择一个值?

如何从列表中选择值?

如何从列表中选择值

如何使用 value_counts 从列表中选择具有特定值的数据

如何从具有值的行中选择数据

如何在SQL中选择具有较高值的行?

如何将R中具有特定差异的值子集化?

从列表中选择值

如何从DataFrame中的命名列级别中选择值的子集?

如何从SQL Server的值列表中选择

如何从列表视图列中选择值

如何基于值从列表中选择实例?

如何从列表中选择值。数学

如何获取从列表中选择的值

如何从下拉列表中选择值

如何从具有特殊设置的网站上使用Selenium从下拉列表中选择一个值-Python

如何从列表中选择具有最后一次出现在c#中的顺序的值

如何从返回的子查询中选择没有值的记录(具有逗号分隔值)?

如何在laravel中选择具有差异条件的计数

如何在具有多索引的数据框中选择具有 1:1 索引的值?

如果第三列具有相同的值,如何从两列中选择唯一值

从具有相同值的字符串列表中选择字符串

在Python中的其他列列表中选择具有列值的行

R:根据向量中具有相同名称的值从列表中选择元素

从选择结果中选择具有最大值的行

如何从逗号分隔值的字段中选择不同值的列表?

如何从A列中选择所有不同的值,这些值在mySQL中的B列中具有确定的值