Поиск ячейки в питоне - PullRequest
       2

Поиск ячейки в питоне

0 голосов
/ 06 января 2019

Я относительно новичок в python и пытаюсь найти ячейку, которая содержит значение "3275", которое здесь, "newELA". Это значение находится в верхнем ряду электронной таблицы и является заголовком. Вот что я пытался:

loc=("/Volumes/Project/Andes_Glacier_Inventory.xlsx")
wb = xlrd.open_workbook(loc)
sheet = wb.sheet_by_index(1)
headers = sheet.row(0)[3:]

a = np.array(sheet.row_values(1,3))

value = 501
ELA = headers[np.argmax(a * (a < value))]
print ("The ELA is", ELA.value)

changeinELA = 100
value1 = changeinELA
value2 = ELA.value
newELA = float(value1) + float(value2)
print ("The new ELA is", newELA)

b = np.where (np.array(headers) == newELA)
print (b)

Я получаю результаты, которые я даже не понимаю

(array([], dtype=int64),)

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Вы получаете пустой массив, потому что в вашем headers нет ничего, равного вашему newELA значению.

Проверьте ваши данные. Просто подумайте, в чем может быть ваша проблема: если есть ошибка с плавающей запятой, вы можете сделать следующее:

tol = 1e-10   #change accordingly
b = np.where (np.abs(np.array(headers, dtype=np.float) - newELA) < tol) #passing dtype=np.float will convert your strings, if you need to
print (b) 
0 голосов
/ 06 января 2019

Вы можете увидеть Как работает Python Numpy? . Значение «3275» является строкой. На с другой стороны, у вас есть массив целых чисел, а newELA - это число с плавающей точкой. Вы должны решить, в каком dtype массив заголовков, и он должен совпадать с переменной newELA. Например,

import numpy as np
headers = [200, 100, 300]
a = np.array(headers)
b = np.where (a == 300)
print(b)

выход

(array([2], dtype=int64),)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...