While using reindex method on any dataframe why do original values go missing?
Regarding your code the tols must be cols?

cols = pd.MultiIndex.from_product([['A','B'],['Y','X'] 
['P','Q']])
tols.set_axis(cols, axis = 1, inplace = False)


This must be:

cols = pd.MultiIndex.from_product([['A','B'],['Y','X'] 
['P','Q']])
cols.set_axis(cols, axis = 1, inplace = False)


Personally I would have removed nan with a default value before performing the multi-indexing.

df_noNAN = from_product.fillna(value=-1)


In your case it looks like the inplace is producing a bug and better reported to the pandas team. On Stack exchange they are extremely responsive.