簡體   English   中英

Pandas Pivot_table 格式

[英]Pandas Pivot_table formatting

如何使用單個 aggfunc 格式化多個值的 pivot_table 輸出。 多個值應該並排出現

數據框是:

kpi_date    ssaname              bts_name call_volume call_drop
0  2015-09-01  Bangalore   1002_NUc_Marathalli        8962      0.62
1  2015-09-03  Bangalore   1002_NUc_Marathalli        6567      1.19
2  2015-09-02  Bangalore   1002_NUc_Marathalli        7033      0.63
3  2015-09-01  Bangalore  1003_IU2_Munnekolalu        4659      1.17
4  2015-09-02  Bangalore  1003_IU2_Munnekolalu        6671      0.46

我希望輸出為:

2015-09-01                  2015-09-02
bts_name,   call_volume   call_drop   call_volume call_drop 

使用數據透視表

您可以使用 groupby 或 pivot_table 函數來聚合 call_volume 和 call_drop。

蟒蛇代碼:

# Method 1: Using pivot_table
pd.pivot_table(df,index=["kpi_date","bts_name"],aggfunc=np.average)

# Method 2: Using groupby
df.groupby(["kpi_date", "bts_name"]).agg({"call_volume": np.average, "call_drop": np.average})

輸出:

kpi_date bts_name                   call_drop    call_volume             
9/1/2015 1002_NUc_Marathalli        0.62         8962
         1003_IU2_Munnekolalu       1.17         4659
9/2/2015 1002_NUc_Marathalli        0.63         7033
         1003_IU2_Munnekolalu       0.46         6671
9/3/2015 1002_NUc_Marathalli        1.19         6567

編輯

這是獲取kpi_date作為列的代碼

# Python code
df.pivot_table(['call_volume', 'call_drop'], ['bts_name'], 'kpi_date')

                         call_volume                   call_drop                  
kpi_date                9/1/2015 9/2/2015 9/3/2015  9/1/2015 9/2/2015 9/3/2015
bts_name                                                                      
1002_NUc_Marathalli         8962     7033     6567      0.62     0.63     1.19
1003_IU2_Munnekolalu        4659     6671      NaN      1.17     0.46      NaN

這是你想要的? 注意:為了便於打印,我將您的列重命名為“call_v”和“call_d”。

    kpi_date    ssaname              bts_name  call_v  call_d
0  2015-09-01  Bangalore   1002_NUc_Marathalli    8962    0.62
1  2015-09-03  Bangalore   1002_NUc_Marathalli    6567    1.19
2  2015-09-02  Bangalore   1002_NUc_Marathalli    7033    0.63
3  2015-09-01  Bangalore  1003_IU2_Munnekolalu    4659    1.17
4  2015-09-02  Bangalore  1003_IU2_Munnekolalu    6671    0.46

df.groupby(['bts_name','kpi_date']).mean().stack().unstack(level=1).unstack(level=1)

kpi_date             2015-09-01        2015-09-02        2015-09-03       
                        call_v call_d     call_v call_d     call_v call_d
bts_name                                                                  
1002_NUc_Marathalli        8962   0.62       7033   0.63       6567   1.19
1003_IU2_Munnekolalu       4659   1.17       6671   0.46        NaN    NaN

基本上就是聚合后的堆疊和拆垛問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM