2 回答
TA贡献1808条经验 获得超4个赞
将列转换为日期时间,获取max每个轴 1 并最后转换为字符串并替换NaTs:
cols = ['datecol1', 'datecol2']
df[cols] = df[cols].apply(pd.to_datetime, errors='coerce')
df['ExpectedResult'] = df[cols].max(axis=1)
df = df.astype(str).replace('NaT','EmployeeNotFound')
#alternative solution
#df = df.astype(str).mask(df.isnull(),'EmployeeNotFound')
print (df)
datecol1 datecol2 ExpectedResult
0 2005-02-22 EmployeeNotFound 2005-02-22
1 2010-02-21 2010-02-22 2010-02-22
2 EmployeeNotFound EmployeeNotFound EmployeeNotFound
3 EmployeeNotFound 2010-02-22 2010-02-22
TA贡献1830条经验 获得超3个赞
您还可以使用 numpy,因为 numpy 函数更快。
import numpy as np
cond = df['datecol1'] != 'EmployeeNotFound'
df['ExpectedResult'] = np.where(cond, df['datecol1'], df['datecol2'])
这里首先datecol1将填充 的所有有效值,然后由第二列填充剩余的值datecol2。
添加回答
举报