В моем фрейме данных есть столбец требований и результатов. Поэтому моя цель состоит в том, чтобы получить логику, чтобы я мог оценить диапазон, указанный в требовании, сравнить его с результатом и сказать, является ли он "ОК" или "Не ОК".
Это мой превосходный скриншот.

Это всего лишь небольшой скриншот Excel.
Таким образом, если значение находится в диапазоне, столбец результатов будет отображаться как " OK ", а если значение не находится в диапазоне, он будет отображать " NOT OK "
В любом случае, могу ли я сделать это, используя панд в python?
Пожалуйста помоги!
Спросите меня, если вопрос не ясен.
import pandas as pd
import numpy as np
import csv
from tabulate import tabulate
df = pd.read_csv('Form3.tsv',delimiter='\t')
df = df.loc[df['level'] == 5]
df = df.dropna(subset=['text'])
df = df.loc[df['top'] > 500]
df = df.loc[df['conf'] != 0]
df = df[df['text'].notnull()]
df = df[df['text'] != ' ']
column_separator = 0
distinct_pages = df.page_num.unique()
#print("Distinct pages in file are ",distinct_pages)
df.sort_values(['page_num','line_num','word_num'])
all_rows = []
for each_page in distinct_pages:
df_each_page = df.loc[df['page_num'] == each_page]
#print(df_each_page)
char_num = []
line_num = []
ref_loc = []
charateristic_designator = []
results = []
requirement_for_each_line = []
each_row = []
current_line_left = 0
previous_line_left = 1000
previous_line_width = 1000
previous_line_number = 1
line_flag = False
result_flag = False
requirement = []
resultText = ''
char_num_text = ''
ref_loc_text = ''
charateristic_designator_text = ''
for index, row in df_each_page.iterrows():
column_separator = 0
word_num = row['word_num']
text = row['text']
Minor_flag = False
requirement_flag = False
current_line_number = row['line_num']
if current_line_number == previous_line_number:
line_flag = False
if current_line_number != previous_line_number:
line_flag = True
previous_line_number = current_line_number
current_line_left = row['left']
column_separator = current_line_left - previous_line_left - previous_line_width
previous_line_left = current_line_left
previous_line_width = row['width']
if (len(results) and column_separator == 6) and 1250 > current_line_left > 1100:
result_flag = True
if line_flag is True:
result_flag = False
if len(requirement) and word_num in (1,2,3) and text != 'Note' and 800 > current_line_left > 500 and column_separator < 0:
requirement_flag = True
if len(requirement) and line_flag is True and (word_num == 1 or (word_num == 2 and column_separator < 0) or (word_num == 4 and column_separator > 300))and requirement_flag is False and result_flag is False and char_num_text != '' and ref_loc_text != '' and charateristic_designator_text != '':
each_row.append(char_num_text)
char_num_text = ''
each_row.append(ref_loc_text)
ref_loc_text = ''
each_row.append(charateristic_designator_text)
charateristic_designator_text = ''
each_row.append(' '.join(list(dict.fromkeys(requirement))))
each_row.append(' '.join(results))
all_rows.append(each_row)
each_row = []
requirement_for_each_line.append(requirement)
requirement = []
results = []
if column_separator < 0 and 100 > current_line_left > 70:
line_num.append(current_line_number)
char_num.append(text)
char_num_text = text
if 210 > current_line_left >= 190:
ref_loc.append(text)
ref_loc_text = text
if 380 > current_line_left > 370 and len(text) == 5:
charateristic_designator.append(text)
Minor_flag = True
charateristic_designator_text = text
if Minor_flag == False and charateristic_designator_text == '':
charateristic_designator.append('Minor')
charateristic_designator_text = 'Minor'
if 1090 > current_line_left >= 500:# and 98 > column_separator > 0:
requirement.append(text)
if 1250 > current_line_left > 1100:# and column_separator > 100:
results.append(text)
resultText = text
result_flag = False
table = tabulate(all_rows, headers=["5. Char No", "6. Reference", "7. Characteristic", "8. Requirement", "9.Results"])
print(table)
headers=["5. Char No", "6. Reference Location", "7. Characteristic Recoginition", "8. Requirement", "9.Results"]
with open('test_file.csv', 'w', newline = '') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(headers)
[writer.writerow(r) for r in all_rows]
Код довольно сложный, потому что, если в основном он извлекал текст из тессеракта, то поэтому он сложен, но вывод, который я получаю, представляет собой огромную таблицу, столбец требований также состоит из текста, но меня беспокоит только наличие разрядное состояние. Как вы можете видеть в конце кода, я напечатал свои выходные данные в файле .csv excel, а теперь мне нужно получить логику для отображения диапазона на рисунке.