Unpivot two different set of columns with values using Python

I need to Unpivot two different set of columns with values in Python. Below is the example:

The current dataset:

df = pd.DataFrame(
    [["Lotion", "Mumbai", 2, 345, 233, 344, 343],
     ["Lotion", "Pune", 2, 456, 234, 445, 875],
     ["Lotion", "Bangalore", 2, 345, 346, 756, 445]],
    columns=["Category", "City", "Body Lotion", "Vaseline", "Boro Plus",
             "Nivea", "Himalaya"]
  Category       City  Body Lotion  Vaseline  Boro Plus  Nivea  Himalaya
0   Lotion     Mumbai            2       345        233    344       343
1   Lotion       Pune            2       456        234    445       875
2   Lotion  Bangalore            2       345        346    756       445

What I want:

enter image description here

I tried using:

df = df.melt(id_vars=('Category', 'City', 'Body Lotion'), var_name='Sub-Category', value_name='Quantity')

But I know this will only work to unpivot the last 4 columns, I am unable to find a solution for the problem I am facing as I am not able to frame the question correctly...

I am new to Python and this is infact the first code that I am writing in Python. If you could guide me to a helpful article, would be great.

How many English words
do you know?
Test your English vocabulary size, and measure
how many words do you know
Online Test
Powered by Examplum