Python Сравнение значений временного ряда - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть временной ряд с отметкой времени (первый столбец) и несколькими целочисленными столбцами данных.

Время Страна 1 Страна 2 Страна 3

12: 00 10,05 25,25 35,40

11: 59 11,12 28,33 35,10

11: 58 12,18 21,70 37,22

11: 57 11,70 21.60 30,20

... ... ... ...

Моя цель - вывести сообщение "Hit" тогда и только тогда, когда следующие 2 условия выполняются ОБА (одновременно):

1) Значение в ячейке (строка 2, столбец 3) равно значению в ячейке (строка 3, столбец) 3)

2) Значение в обеих вышеупомянутых ячейках оканчивается на .00 или 0,20 или 0,50 или 0,85

Так, например, скажем, значение ячейки (строка 2, столбец 3) было 18,85 , а значение ячейки (строка 3, столбец 3) было 18,85 , было бы быть хитом (так как оба одинаковы и оба заканчиваются на .85). Но если бы они оба были 18,66, не было бы выходных данных, поскольку только условие 1 выполнено, а условие 2 - нет.

Я новичок в Python и очень ценю вашу помощь.

1 Ответ

0 голосов
/ 17 апреля 2020

Если данные хранятся в файле Excel:

Примечание: если файл Excel содержит более одного листа, используйте

sheet = wb["your_sheet_name"]

вместо

sheet = wb.active
from openpyxl import Workbook, load_workbook
wb = load_workbook('your_file.xlsx')
# print(wb)
sheet = wb.active
#print(dir(sheet))

cell1 = sheet.cell(2,3).value
cell2 = sheet.cell(3,3).value
if cell1 == cell2 and cell1:
  loc = str(cell1).index('.')
  if str(cell1)[loc+1:] in ['00','20','50','85']:
    print('Hit!')

Или, если в текстовом файле:

Примечание: предполагается, что между каждой строкой есть строка пустого текста!

with open('your_file.txt','r') as data:
  d = data.read()
  cell1 = d.split('\n')[2].split(' ')[2]
  cell2 = d.split('\n')[4].split(' ')[2]
  cell1 = float(cell1)
  cell2 = float(cell2)

  if cell1 == cell2:
    loc = str(cell1).index('.')
    if str(cell1)[loc+1:] in ['00','20','50','85']:
      print("Hit")
...