If need factorize for strings columns use: cols = df.select_dtypes(object).columns df[cols] = df[cols].apply(lambda x: pd.factorize(x)[0])