Sklearn needs everything to be a number (could be float instead of int though).
I think booleans might automatically convert to a 0/1, so you might not need to change those.
Strings will not work. (But you could use a label encoder in scikit learn to turn every string into a number, or make a separate column for each possible value of the string that you care about, with a 0/1 value representing whether that value is present.)