我有一个有多列的已排序的csv文件,我想返回第1列中项目的值或索引。这个csv文件有大约300.000到400.000的值,所以我试图避免任何{{ 1}}函数,因为它可能需要很长时间,我需要在一秒钟内的值。
所以我正在做的是通过以下方式将column1的条目添加到列表中:
min
现在是棘手的部分,因为我找不到合适的功能和/或寻找更低或相等价值的例子。 我尝试编辑我在stackoverflow.com上找到的这个例子
with open('example.csv', 'r') as f:
reader = csv.reader(f, delimiter=';')
for row in reader:
array.append(int(row[0]))
此示例给出最接近的值,更低,相等或更大。但我无法按照自己的方式改变它。
作为一个数字的例子,我正在寻找的是:
def find_closest(t):
idx = bisect.bisect_left(array, t) # Find insertion point
# Check which timestamp with idx or idx - 1 is closer
if idx > 0 and abs(array[idx] - value) > abs(array[idx - 1] - value):
idx -= 1
return array[idx]
因此,在查找value1时,它应该返回array=[123,123,123,124,125,125,125,128,128,128,128]
value1=124
value2=127
或索引。
如果值不包含在值2中,则应返回低于搜索值的最高值。 return1=124
即使较高的值128更接近。
我尝试使用bisect模块,但我失败了。任何tipps都很受欢迎。
问候