Got some troubles with using OneHotEncoder to multiple categories
df.columns is incorrect because after One-hot-encoding you have more columns with different names. In your example instead of Sex you have two columns for the actual values and instead of Embarked you have three.
The whole point of the pipeline is to create those additional columns so why do you want to drop them? I do not know where you define df.columns but it seems to me the error is happening in this line:
df_total = pd.DataFrame(df_prepared, columns=df.columns)