import pandas as pd
import numpy as np
df = pd.DataFrame({'state': ['CA', 'WA', 'CO', 'AZ'] * 3,
'office_id':list(range(1,7)) * 2,
'sales': [np.random.randint(100000, 999999)
for _ in range(12)]})
s1=df.groupby(['state','office_id']).aggregate({'sales':np.sum})
ds=s1.groupby(level=0).apply(lambda x: x*100/float(x.sum()))
ds