我有一个数据帧,每行有多个状态字段。我想检查是否有任何状态字段在列表中有值,如果有,我需要取对应状态的最低日期字段。我的可接受值列表和示例数据框如下所示:
checkList = ['Foo','Bar']
df = pd.DataFrame([['A',np.nan,np.nan,np.nan,np.nan,np.nan,np.nan],['B','Foo',datetime.datetime(2017,10,1),'Other',datetime.datetime(2017,9,1),np.nan,np.nan],
['C','Bar',datetime.datetime(2016,1,1),np.nan,np.nan,'Foo',datetime.datetime(2016,5,5)]]
,columns = ['record','status1','status1_date','status2','status2_date','another_status','another_status_date'])
print df
record status1 status1_date status2 status2_date another_status \
0 A NaN NaT NaN NaT NaN
1 B Foo 2017-10-01 Other 2017-09-01 NaN
2 C Bar 2016-01-01 NaN NaT Foo
another_status_date
0 NaT
1 NaT
2 2016-05-05
我需要弄清楚这些状态是否在批准名单中。如果是的话,我需要一个批准状态的第一个日期。输出如下所示:
print output_df
record master_status master_status_date
0 A False NaT
1 B True 2017-10-01
2 C True 2016-01-01
关于如何最好地接近的想法?我不能只取min date,我需要min,在列表中对应的status字段
相关问题 更多 >
编程相关推荐