I have a DataFrame and one of the columns is a list of dictionaries. I need to apply conditions on the column containing the list of dictionary and get a boolean value. The condition includes a DateTime format.
lastDate = pd.to_datetime(date.today().replace(day=1) - timedelta(1))
Output is: Timestamp('2020-10-31 00:00:00')
DataFrame,
ID Name Status
1 Rav [{'status': 'SIGNUP', 'Date': datetime.datetime(2020, 10, 30, 2, 43, 18, 578000)}, {'status': 'REG_COMPLETED', 'Date': datetime.datetime(2020, 10, 30, 2, 55, 52, 120000)}]
2 Suv [{'status': 'SIGNUP', 'Date': datetime.datetime(2020, 11, 01, 2, 43, 18, 578000)}, {'status': 'REG_COMPLETED', 'Date': datetime.datetime(2020, 11, 01, 2, 55, 52, 120000)}]
3 Tim [{'status': 'SIGNUP', 'Date': datetime.datetime(2020, 11, 01, 2, 43, 18, 578000)}, {'status': 'REG_COMPLETED', 'Date': datetime.datetime(2020, 11, 01, 2, 55, 52, 120000)}]
4 Jaq [{'status': 'SIGNUP', 'Date': datetime.datetime(2020, 11, 01, 2, 43, 18, 578000)}, {'status': 'REG_COMPLETED', 'Date': datetime.datetime(2020, 11, 01, 2, 55, 52, 120000)}]
5 Tan [{'status': 'SIGNUP', 'Date': datetime.datetime(2020, 10, 30, 2, 43, 18, 578000)}, {'status': 'REG_COMPLETED', 'Date': datetime.datetime(2020, 10, 30, 2, 55, 52, 120000)}]
If the status = "REG_COMPLETED" and Date <= lastDate, THEN True else False
Required Output,
ID Name Status
1 Rav True
2 Suv False
3 Tim False
4 Jaq False
5 Tan True
I tried this but gives me an empty DataFrame,
df[df['status'].apply(lambda x: x[0]['Status']=='REG_COMPLETED' and x[0]['Date']<=lastDate)]