Handling a Pandas Data Frame containing multiple non-ordinal categorical features
It looks like a case where target encoding will shine. 

Target encoding replaces a category for the mean target in that category. You have to be careful not to overfit, but it is a very effective method to use categorical features with many levels.

There's a python package that implements target encoding using the syntax of Scikit Learn.