text: Title: [ENH] Modify dataframe list with union of their categoricals
  Body: The problem: vertical `pd.concat([df1, df2, ...])` converts categoricals to strings if the categories do not perfectly overlap between all dataframes. 
  
  The solution: use pandas' `union_categoricals` to modify the original dataframes to add all categories to all dataframes prior to the concatenation.
  
  How to use `union_categoricals`:
  
  From https://stackoverflow.com/questions/45639350/retaining-categorical-dtype-upon-dataframe-concatenation :
  
  ```python
  from pandas.api.types import union_categoricals
  
  uc = union_categoricals([df1.x,df2.x])
  df1.x = pd.Categorical( df1.x, categories=uc.categories )
  df2.x = pd.Categorical( df2.x, categories=uc.categories )
  ```
  
  The final function could iterate over all columns whose names match and are categorical. It can alternatively take an explicit list of particular columns.