你将不得不创建第二个
groupby对象,但是你可以以一种更简单的方式来计算百分比-仅
groupby计算
state_office并将该
sales列除以其和即可。复制Paul H答案的开头:
# From Paul Himport numpy as npimport pandas as pdnp.random.seed(0)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)]})state_office = df.groupby(['state', 'office_id']).agg({'sales': 'sum'})# Change: groupby state_office and divide by sumstate_pcts = state_office.groupby(level=0).apply(lambda x: 100 * x / float(x.sum()))返回值:
salesstate office_idAZ 2 16.981365 4 19.250033 6 63.768601CA 1 19.331879 3 33.858747 5 46.809373CO 1 36.851857 3 19.874290 5 43.273852WA 2 34.707233 4 35.511259 6 29.781508



