gpt4 book ai didi

python - 如何(有效地)检查任何两个元素是否相差 10

转载 作者:太空宇宙 更新时间:2023-11-04 10:22:17 26 4
gpt4 key购买 nike

假设我在 --pandas-- 数据框中有以下列:

      x   
1 589
2 354
3 692
4 474
5 739
6 731
7 259
8 723
9 497
10 48

注意:我已将索引更改为从 1 开始(参见测试数据)。

我只想测试此列中任意两项之间的差异是否小于 10。最终结果:没有两个元素的绝对差应该小于 10。

目标:

      x   
1 589
2 354
3 692
4 474
5 749 #
6 731
7 259
8 713 #
9 497
10 48

也许这可以使用:

for index, row in df.iterrows():

然而,到目前为止还没有成功......

鉴于我正在寻求执行元素方面的比较,我不期望暂存速度...


测试数据:

import pandas as pd

df = pd.DataFrame(index = range(1,stim_numb+1), columns= ['x'])
df['x'] = [589, 354, 692, 474, 739, 731, 259, 723, 497, 48]

最佳答案

一个解决方案可能是对列表进行排序,然后比较连续的项目,当差异太小时添加 10,然后将列表排序回原始顺序(如果需要)。

from operator import itemgetter
lst = [589, 354, 692, 474, 739, 731, 259, 723, 497, 48]
# temp is list as pairs of original index and value, sorted by value
temp = [[i, e] for i, e in sorted(enumerate(lst), key=itemgetter(1))]
last = None
for item in temp:
while last is not None and item[1] < last + 10:
item[1] += 10
last = item[1]
# sort the list back to original order using the index from the tuple
lst_new = [e for i, e in sorted(temp, key=itemgetter(0))]

结果是 [589, 354, 692, 474, 759, 741, 259, 723, 497, 48]

这是使用普通的 Python 列表;也许可以在 Pandas 或 Numpy 中更优雅地完成。

关于python - 如何(有效地)检查任何两个元素是否相差 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31611606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com