fit = df.apply(lambda x: d[x.name].fit_transform(x))
fit.apply(lambda x: d[x.name].inverse_transform(x))
df.apply(lambda x: d[x.name].transform(x))
Label encoding across multiple columns in scikit-learn