docs: def expand_dates(df, columns=[]):
      """
      generate year, month, day features from specified date features
      """
      columns = df.columns.intersection(columns)
      df2 = df.reindex(columns=set(df.columns).difference(columns))
      for column in columns:
          df2[column + '_year'] = df[column].apply(lambda x: x.year)
          df2[column + '_month'] = df[column].apply(lambda x: x.month)
          df2[column + '_day'] = df[column].apply(lambda x: x.day)
      return df2