亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用兩個數據框計算熊貓百分比

使用兩個數據框計算熊貓百分比

DIEA 2021-12-16 15:00:02
我正在嘗試使用每個多指標的總銷售額來計算銷售額的百分比。我的數據框是這樣的:local   categoria   fabricante   tipo      consistencia    peso         pacote   ordem vendas_kgAREA I  SABAO       ASATP        DILUIDO   LIQUIDO         1501 A 2000g PLASTICO 1    10AREA I  SABAO       TEPOS        DILUIDO   LIQUIDO         1501 A 2000g PLASTICO 1    20AREA I  SABAO       ASATP        CAPSULA   LIQUIDO         1501 A 2000g PLASTICO 1    20AREA I  SABAO       TEPOS        CAPSULA   LIQUIDO         1501 A 2000g PLASTICO 1    30所以我計算索引中每個唯一元組的總銷售額并存儲為總數據框。我的目標是計算每個 ['fabricante'] 市場份額,但現在我的目標是 TEPOS。` 在旋轉我的 DataFrame 后變成這樣:                                       sum           sum                                 vendas_kg     vendas_kgfabricante                           ASATP         TEPOS      Totallocal          tipo      ordem AREA I         DILUIDO     1          10            20         30                           2          20            30         50               CAPSULA     1          10            20         30                           2          20            30         50AREA II        DILUIDO     1          10            15         25                           2          20            25         45               CAPSULA     1          25            35         55                           2          20            30         50我用來計算總數并使用多索引創建數據框的代碼是:#creating a sample from all dataa = df.sample(n=50)#creating a multiindex dataframetemp_df = pd.pivot_table(a.fillna(value=0), index=['tipo','local','pacote'],columns=['fabricante'], values=['vendas_kg'], fill_value=0, aggfunc=[np.sum])total = temp_df.sum(level=1, axis=1)#calculating the marketshare for Tepostemp_df[('sum','vendas_kg','TEPOS')] = temp_df[('sum','vendas_kg','TEPOS')] / temp_df.sum(level=1, axis=1)有兩件事正在發生,如果我使用所有列,所有數據都變為 NaN,如果我使用上面的代碼。
查看完整描述

1 回答

?
弒天下

TA貢獻1818條經驗 獲得超8個贊

試試這個:


df_percent = temp_df.apply(lambda x: round(x / x.sum() * 100, 2), axis = 1)


                            sum

                            vendas_kg

              fabricante    ASATP   TEPOS

tipo    local   pacote      

CAPSULA AREA I  PLASTICO    40.00   60.00

        AREA II PLASTICO    22.73   77.27

DILUIDO AREA I  PLASTICO    37.50   62.50

        AREA II PLASTICO    42.86   57.14

要添加total列,請執行以下操作:


df_percent['total'] = total

解釋


這apply相當于一個循環,軸命令告訴應用程序他將在列中滾動。代碼所做的只是獲取每一行的值并除以整行的總和。我實施的方式僅在您添加其他列之前有效total


查看完整回答
反對 回復 2021-12-16
  • 1 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號