Идея - добавить ,
для целых чисел с длиной 4
до -
для возможного разбиения на ,
, преобразовать в даты и получить max
значение:
df = pd.DataFrame({'date':['2019-09-27 09:15:422019-09-28 14:55:182019-09-26 04:54:12',
'2018-09-27 09:15:422018-09-28 14:55:182020-09-26 04:54:12']})
#print (df)
f = lambda x: pd.to_datetime(x, errors = 'coerce',infer_datetime_format=True)
df['last'] = (df['date'].str.replace(r'(\d{4}-)', r',\1')
.str.split(',', expand=True)
.apply(f)
.max(axis=1))
print (df)
date last
0 2019-09-27 09:15:422019-09-28 14:55:182019-09-... 2019-09-28 14:55:18
1 2018-09-27 09:15:422018-09-28 14:55:182020-09-... 2020-09-26 04:54:12
РЕДАКТИРОВАТЬ:
d = {'Preauth Pending Date': [nan, nan, nan, '2019-09-21 05:34:06', nan],
'Preauth Pending Updated Date': [nan, nan, nan, '2019-09-23 10:29:05', nan],
'Claim Pending Date': ['2019-09-26 15:51:492019-09-16 09:40:06', nan,'2019-09-24 11:59:33', nan, nan],
'Claim Pending Updated Date': ['2019-09-27 09:06:122019-09-16 09:49:34', nan, '2019-09-25 09:13:45', nan, nan]}
df = pd.DataFrame(d)
#print (df)
for c in df.columns:
f = lambda x: pd.to_datetime(x, errors = 'coerce',infer_datetime_format=True)
df[c] = (df[c].str.replace(r'(\d{4}-)', r',\1')
.str.split(',', expand=True)
.apply(f)
.max(axis=1))
print (df)
Preauth Pending Date Preauth Pending Updated Date Claim Pending Date \
0 NaT NaT 2019-09-26 15:51:49
1 NaT NaT NaT
2 NaT NaT 2019-09-24 11:59:33
3 2019-09-21 05:34:06 2019-09-23 10:29:05 NaT
4 NaT NaT NaT
Claim Pending Updated Date
0 2019-09-27 09:06:12
1 NaT
2 2019-09-25 09:13:45
3 NaT
4 NaT