How to use the $\chi^2$ test to select the features, that can be String or categorical?
You can only compute chi2 between two numerical arrays. You are getting that error because  you are comparing a string. Also I am not sure if it works for multiclassification also.

df = df.apply(LabelEncoder().fit_transform)


This will solve the problem for you. But there are a thousand ways to encode features and for sure other will work better for you.