Проверка нескольких полей (строковых полей и полей даты) во фрейме данных - PullRequest
1 голос
/ 04 марта 2020

У меня есть фрейм данных (df), который выглядит следующим образом:

Id                  Status  Date of entry to current post  Date of entry to current payband
 1  NEW ENTRANT - EXTERNAL                       1/1/2020                         1/1/2019
 2                 CURRENT                       1/1/2020                         1/1/2020 

Я пытаюсь написать проверку, которая возвращает любые записи, которые имеют Date of entry to current post, предшествующий Date of entry to current payband, и Status поле является новым типом входа (есть несколько, следовательно, подстановочный знак).

Я пробовал следующее без успеха

df['Date of entry to current post']>df['Date of entry to current payband'] & df['Status'] =='NEW ENTRANT*')

Так что в этом примере я хотел бы вернуть:

Id                  Status  Date of entry to current post  Date of entry to current payband
 1  NEW ENTRANT - EXTERNAL                       1/1/2020                         1/1/2019

Как с этим справиться?

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Вы сравниваете со строкой 'NEW ENTRANT*', означающей строку, фактически содержащую символ *.

То, что вы хотите:

... & df['Status'].str.match('NEW ENTRANT'))

Но если столбцы даты действительно содержат строки, вы будете сравнивать их в лексикографическом порядке c, что, вероятно, не то, что вам нужно ...

1 голос
/ 04 марта 2020

Если у вас есть столбцы даты и времени для ваших дат, это должно работать:

import numpy as np
df['Condition'] = np.where((df['Date of entry to current post']>df['Date of entry to current payband']) & (df['Status'] =='NEW ENTRANT*'), 1, 0)
df = df.loc[df['Condition'] == 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...