Если я вас правильно понял: вы хотите найти одну запись, которая не содержит дату изменения и статус CURRENT, а затем хотите вернуть все остальные записи для этого.Так что, если есть другие записи для Ральфа, например, вы также хотите их получить.
Мое решение для этого было бы:
import pandas as pd
data = {"Name":["Bob","Steve","Heather","Lizzy","Ralph","Ralph","Ralph"],
"Status":["CURRENT","CURRENT","NEW JOINER","NEW JOINER","LEFT","CURRENT","CURRENT"],
"Status change date": ["","","02/08/2018","06/02/2018","","06/02/2018","06/02/2018"],
"Product":["Pencils","Pens","Paper","Pens","Paper","Pencils","Pens"]}
df = pd.DataFrame(data)
df["Status change date"]=pd.to_datetime(df["Status change date"])
df.head()
Name Status Status change date Product
0 Bob CURRENT NaT Pencils
1 Steve CURRENT NaT Pens
2 Heather NEW JOINER 2018-02-08 Paper
3 Lizzy NEW JOINER 2018-06-02 Pens
4 Ralph LEFT NaT Paper
5 Ralph CURRENT 2018-06-02 Pencils
6 Ralph CURRENT 2018-06-02 Pens
получить все записи, которые не имеют текущего состояния и даты изменения статуса:
finalError = df[(df["Status"]!="CURRENT") & (df["Status change date"].isnull())]
finalError.head()
Name Status Status change date Product
4 Ralph LEFT NaT Paper
Теперь проверьте наличиеимена в старом фрейме данных, чтобы получить все записи от Ральфа.
df[df["Name"]==finalError["Name"].any()]
Name Status Status change date Product
4 Ralph LEFT NaT Paper
5 Ralph CURRENT 2018-06-02 Pencils
6 Ralph CURRENT 2018-06-02 Pens