【发布时间】:2018-01-27 19:14:45
【问题描述】:
我无法发表评论,因为我是 stackoverflow 的新手,所以不能直接在线程中提问,但我想在 question 中澄清解决方案:
# From Paul H import numpy as np import pandas as pd np.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 sum state_pcts = state_office.groupby(level=0).apply(lambda x: 100 * x / float(x.sum()))
我了解多索引选择(0 级与 1 级),但我不清楚 lambda 函数中的每个 x 指的是什么。 x.sum() 中的 x 对我来说是指 level = 0(在 level = 0 处对每个分组内的所有结果求和),但 100 * x 中的 x 似乎是指 groupby 对象中的每个单独结果(不是索引level = 0 分组)。
对于这样一个基本的问题很抱歉,但解释会非常有用!
【问题讨论】: