【发布时间】:2014-06-16 03:00:59
【问题描述】:
这显然很简单,但作为一个 numpy 新手,我被卡住了。
我有一个 CSV 文件,其中包含 3 列,即州、办公室 ID 和该办公室的销售额。
我想计算给定州每个办公室的销售额百分比(每个州所有百分比的总和为 100%)。
df = pd.DataFrame({'state': ['CA', 'WA', 'CO', 'AZ'] * 3,
'office_id': range(1, 7) * 2,
'sales': [np.random.randint(100000, 999999)
for _ in range(12)]})
df.groupby(['state', 'office_id']).agg({'sales': 'sum'})
这会返回:
sales
state office_id
AZ 2 839507
4 373917
6 347225
CA 1 798585
3 890850
5 454423
CO 1 819975
3 202969
5 614011
WA 2 163942
4 369858
6 959285
我似乎不知道如何“达到”groupby 的state 级别,以合计整个state 的sales 来计算分数。
【问题讨论】:
-
df['sales'] / df.groupby('state')['sales'].transform('sum')似乎是最明确的答案。