Как оглянуться на несколько строк выше, чтобы увидеть, выполнено ли условие, а затем заменить ячейку соответствующим образом. - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть фрейм данных, согласно которому, если условие удовлетворяется, он просматривает пару строк выше, чтобы найти конкретную строку с другой строкой, и заменяет себя всей этой ячейкой, в которой была строка.

Вот пример:

enter image description here

Если в столбце типа обнаружен «тест», он ищет на 3 строки выше строку, содержащую строку «Тема»,Если это условие выполнено, оно меняет имя своей ячейки на всю найденную ячейку.

Данные:

Type    Score
Ignore  Ignore
Subject_English NA
test    58
test    6
test    87
Subject_science NA
test    23
test    47
test    89
test    45
test    23
ignore  ignore
ignore  ignore
ignore  ignore
test    54
Subject_Math    NA
Ignore  ignore
Ignore  ignore
test    88

Наконец, если несколько строк удовлетворяют начальному условию, он принимаетсамый последний.Во-вторых, после изменения ячейки эта ячейка может использоваться для удовлетворения первого условия для другой ячейки.В-третьих, может быть несколько строк между строкой «test» и строкой, которую я ищу, чтобы удовлетворить условию, которое мне нужно игнорировать.Дополнительные примечания: Количество тестов может варьироваться, это может быть 3 или 10. Вы можете игнорировать между субъектами.Если возможно, я бы хотел добавить порог, чтобы, если в последних 10 строках не было субъекта, оставьте его в качестве теста

1 Ответ

0 голосов
/ 05 декабря 2018

Как оглянуться на несколько строк выше, чтобы увидеть, удовлетворено ли условие, и затем заменить ячейку соответственно

Попытка «оглянуться назад», безусловно, возможна, но добавляетмного сложностей.Вместо этого перебирайте строки сверху вниз.Всякий раз, когда вы сталкиваетесь с ячейкой, значение которой начинается с «Тема», задайте для переменной current_subject это значение.Всякий раз, когда вы сталкиваетесь с ячейкой со значением «test», установите для этой ячейки значение в current_subject.

Я бы хотел добавить порог, который, если бы не былосубъект в последних 10 строках, затем оставьте его в качестве теста

ОК, поэтому создайте еще одну переменную с именем nonsubject_rows.Установите его в 0 всякий раз, когда вы сталкиваетесь с строкой темы, и, возможно, также всякий раз, когда вы устанавливаете тестовую строку для текущей темы;в противном случае увеличивайте его для каждой строки, которую вы посещаете.Перед тем, как установить значение тестовой строки, проверьте, больше ли nonsubject_rows, чем порог;если это так, не меняйте строку.

Короче говоря, вы можете отслеживать информацию, которая вам нужна для обработки каждой строки по ходу работы.Это будет намного проще и быстрее, чем искать информацию каждый раз, когда вам это нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...