为了账号安全,请及时绑定邮箱和手机立即绑定

大熊猫占群总数的百分比

大熊猫占群总数的百分比

月关宝盒 2019-07-10 14:50:30
大熊猫占群总数的百分比这显然很简单,但作为一个粗俗的新闻,我被困住了。我有一个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计算分数。
查看完整描述

3 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

您需要创建第二个按状态分组的组对象,然后使用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索引的级别。


查看完整回答
反对 回复 2019-07-10
  • 3 回答
  • 0 关注
  • 445 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信