大熊猫占群总数的百分比

大熊猫占群总数的百分比

这显然很简单,但作为一个粗俗的新闻,我被困住了。

我有一个CSV文件,其中包含3列:State、Office 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          347225CA    1          798585
      3          890850
      5          454423CO    1          819975
      3          202969
      5          614011WA    2          163942
      4          369858
      6          959285

我似乎想不出如何“伸手”到state级别groupby的总和sales整个state计算分数。


月关宝盒
浏览 446回答 3
3回答

莫回无

您需要创建第二个按状态分组的组对象,然后使用div方法:import numpy as npimport 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'})state = df.groupby(['state']).agg({'sales': 'sum'})state_office.div(state, level='state') * 100                      sales state office_id            AZ    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这个level='state'克沃格div通知熊猫根据state索引的级别。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python