Dropping a column if a feature is not binary can be done but be aware that one could lose interpretability of the model. Imagine that you are training a model on the following encoded features:
from sklearn.preprocessing import OneHotEncoder
import numpy as np
X = np.array([["rabbit"] * 5 + ["dog"] * 3 + ["snake"] * 4], dtype=object).T
ohe = OneHotEncoder(drop="first").fit(X)
then it would assign the encoded vectors in alphabetical ordering:
ohe.transform([["rabbit"]]).toarray()
>>> array([[1., 0.]])
ohe.transform([["dog"]]).toarray()
>>> array([[0., 0.]])
ohe.transform([["snake"]]).toarray()
>>> array([[0., 1.]])
Then the interpretation of the model requires us to take into account the premise that dogs are regarded as non-rabbit-nor-snake animals.