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

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

Python pivot_table - 添加差異列

Python pivot_table - 添加差異列

滄海一幻覺 2023-02-15 17:13:11
我是 python 的新手。我有以下數據框。我能夠在 Excel 中旋轉。我想添加差異列(在圖像中,我手動添加了它)。區別在于BA值。我能夠使用 Python 數據透視表復制差異列和總計除外。下面是我的代碼。table = pd.pivot_table(data, index=['Category'], values = ['value'], columns=['Name','Date'], fill_value=0)如何添加差異列并計算值?我怎樣才能得到底部的總計?數據如下df = pd.DataFrame({"Value": [0.1, 0.2, 3, 1, -.5, 4],"Date": ["2020-07-01", "2020-07-01", "2020-07-01", "2020-07-01", "2020-07-01", "2020-07-01"],"Name": ['A', 'A', 'A', 'B', 'B', 'B'],"HI Display1": ["X", "Y", "Z", "Z", "Y", "X"]})我想要數據透視表如下
查看完整描述

2 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

這是一種方法:


df = pd.DataFrame({

    "Name": ["A", "A", "A", "B", "B", "B"], 

    "Date": "2020-07-01", 

    "Value": [0.1, 0.2, 3, 2, -.5, 4], 

    "Category": ["Z", "Y", "X", "Z", "Y", "X"]

})


piv = pd.pivot_table(df, index="Category", columns="Name", aggfunc=sum)

piv.columns = [c[1] for c in piv.columns]

piv["diff"] = piv.B - piv.A

輸出 ( piv) 是:


            A    B  diff

Category                

X         3.0  4.0   1.0

Y         0.2 -0.5  -0.7

Z         0.1  2.0   1.9

要為 A 和 B 添加“總計”,請執行


piv.loc["total"] = piv.sum()

從“差異”列中刪除總數:


piv.loc["total", "diff"] = "" # or np.NaN, if you'd like to be more 

                              # 'pandas' style. 

現在的輸出是:


            A    B  diff

Category                

X         3.0  4.0   1.0

Y         0.2 -0.5  -0.7

Z         0.1  2.0   1.9

total     3.3  5.5   

如果此時您想在類別頂部添加標題“名稱”,請執行以下操作:


piv.columns = pd.MultiIndex.from_product([["Name"], piv.columns])

piv就是現在:


         Name          

            A    B diff

Category               

X         3.0  4.0  1.0

Y         0.2 -0.5 -0.7

Z         0.1  2.0  1.9

total     3.3  5.5  

將日期添加到每一列:


date = df.Date.max()

piv.columns = pd.MultiIndex.from_tuples([c+(date,) for c in piv.columns])


==>

               Name                      

                  A          B       diff

         2020-07-01 2020-07-01 2020-07-01

Category                                 

X               3.0        4.0          1

Y               0.2       -0.5       -0.7

Z               0.1        2.0        1.9

total           3.3        5.5           

最后,要為列著色(例如,如果您使用的是 Jupyter),請執行以下操作:


second_col = piv.columns[2]

piv.style.background_gradient("PiYG", subset = [second_col]).highlight_null('white').set_na_rep("")

http://img1.sycdn.imooc.com//63eca2550001041c06250431.jpg

查看完整回答
反對 回復 2023-02-15
?
達令說

TA貢獻1821條經驗 獲得超6個贊

添加總計的其他方法是將“margins=True”參數添加到 pivot 函數,然后用差異替換 Total 列,如下所示:


data = {

        'Name':['A', 'A' ,'A', 'B', 'B', 'B','A', 'A' ,'A', 'B', 'B', 'B' ],

        'Value':[1, 2, 3, 4, 5, 6,1, 2, 3, 4, 5, 6, ],

        'Category': ['X', 'Y', 'Z','X', 'Y', 'Z','X', 'Y', 'Z','X', 'Y', 'Z']

    }


df = pd.DataFrame(data)


pivot_ = df.pivot_table(index = ["Category"], 

              columns = "Name" , 

              values = "Value", 

              aggfunc = "sum", 

              margins=True, 

              margins_name='Totals')\

 .fillna('')


pivot_['Totals'] = pivot_['B'] - pivot_['A']


pivot_.rename(columns={"Totals": "Diff"})

輸出:


Name    A   B   Diff

Category            

X       2   8   6

Y       4   10  6

Z       6   12  6

Totals  12  30  18

根據問題更新進行編輯:

讓我們使用您現在提供的示例數據:


pivot_1 = df_1.pivot_table(index = ["HI Display1"], 

              columns = ["Name", 'Date'], 

              values = "Value", 

              aggfunc = "sum", 

              margins=True, 

              margins_name='Totals'

).fillna('')


pivot_1['Totals'] = pivot_1['B'].sum(axis=1) - pivot_1['A'].sum(axis=1)


pivot_1.rename(columns={"Totals": "Diff"})

輸出:


Name        A           B           Diff

Date        2020-07-01  2020-07-01  

HI Display1         

X           0.1         4.0         3.9

Y           0.2         -0.5        -0.7

Z           3.0         1.0         -2.0

Totals      3.3         4.5         1.2


查看完整回答
反對 回復 2023-02-15
  • 2 回答
  • 0 關注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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