Python: фильтровать каждую строку журнала данных CSV по нескольким критериям - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть журнал данных опроса в формате csv.677 столбцов по 900 строк.Существует ряд из 40 столбцов «Дата и время» и связанных с ними «Оценок», затем много столбцов «Дата и время», за которыми следует ряд столбцов лекарств.Это похоже на таблицу ниже:

  ID |   Date & Time   | Score #1 |   Date & Time   | Score #2 |   Date & Time   | Med 1 | Med 2 |   Date & Time   | Med 1 | Med 2 
 ----|-----------------|----------|-----------------|----------|-----------------|-------|-------|-----------------|-------|------- 
   1 | 4/28/2018 1:27  |        4 | 4/28/2018 2:05  |        9 | 4/28/2018 1:20  | N     | N     | 4/28/2018 2:20  | Y     | N     
   2 | 4/26/2018 15:40 |       11 | 4/27/2018 00:02 |        3 | 4/26/2018 15:50 | Y     | Y     | 4/27/2018 00:02 | N     | N     
   3 | 4/28/2018 4:25  |        5 | 4/28/2018 5:47  |        3 | 4/28/2018 5:11  | N     | Y     | 4/28/2018 6:11  | Y     | N

Я бы хотел отфильтровать данные для каждой строки на основе следующих критериев:

  1. Всякий раз, когда давалось лекарство, показыватьоценка, которая была сделана незадолго до периода медитациичтобы увидеть):
      ID | #1 Date & Time  | #1 Score | #1 Date & Time  | #1 Med 1 | #1 Med 2 | #2 Date & Time | #2 Score | #2 Date & Time | #2 Med 1 | #2 Med 2 
     ----|-----------------|----------|-----------------|----------|----------|----------------|----------|----------------|----------|---------- 
       1 | 4/28/2018 2:05  |        9 | 4/28/2018 2:20  | Y        | N        |                |          |                |          |          
       2 | 4/26/2018 15:40 |       11 | 4/26/2018 15:50 | Y        | Y        |                |          |                |          |          
       3 | 4/28/2018 4:25  |        5 | 4/28/2018 5:11  | N        | Y        | 4/28/2018 5:47 |        3 | 4/28/2018 6:11 | Y        | N        
    

    Единственный способ, который приходит ко мне, чтобы решить эту проблему, - это перебор грубой силы через каждый ряд csv и:

    1. Создатьсписок столбцов, которые содержат дату и время для каждой оценки.
    2. Создайте список столбцов, которые содержат дату и время для каждого блока Med.
    3. Просмотрите в каждом блоке медика «Y»ячеек.
    4. Сравните эту дату / время с перевернутым списком даты / времени Оценка, чтобы найти оценку, которая произошла непосредственно перед медитацией 'Y'.
    5. Сохраните дату / время,Счет, дата / время, Meds ... в строке нового списка CSV.

    Это хорошо, но не очень гибко на случай, если в будущем мне понадобится отфильтровать данные другим способом.Исследуя это, я наткнулся на Панд, которые, казалось, могли бы легко выполнить такую ​​фильтрацию, но я не мог понять, как.У кого-нибудь есть более простое / более гибкое решение?

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