Все будет проще, если вы преобразуете строки даты в объекты datetime. Как только это будет сделано, вы можете отсортировать их, а затем взять первую запись по идентификатору пользователя. Кроме того, вы можете отфильтровать фрейм данных, передав строку даты в вашем условном выражении, и действовать аналогичным образом.
df['recorddate'] = pd.to_datetime(df['recorddate'])
df.sort_values(by='recorddate', inplace=True)
df.groupby('userid').first()
output
recorddate
userid
nick 2019-06-01
tom 2018-02-12
или
df[df['recorddate']>'2019-01-01'].groupby('userid').first()