如果我理解正确:您希望找到一个不包含更改日期和当前状态的记录,然后将所有其他记录返回到。因此,如果有其他条目为拉尔夫举例来说,你想得到他们以及。
我的解决方案是:
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