簡體   English   中英

pandas pivot-table如何添加嵌套列

[英]pandas pivot-table how to add nested columns

DF

    billsec       disposition    Date           Hour
0   185            ANSWERED     2016-11-01       00
1   0             NO ANSWER     2016-11-01       00
2   41             ANSWERED     2016-11-01       01
3   4              ANSWERED     2016-12-02       05

有一個表,我需要從中得到一個包含以下數據的匯總表:

在此輸入圖像描述

行是一天中的小時數,列是天數,在呼叫總數/錯過/總呼叫持續時間內。

如何在此表中添加其他列(全部,丟失,時間)。 到目前為止,我只計算出每小時通話的總持續時間及其總數。 不同表格中的真相......

df.pivot_table(rows='Hour',cols='Date',aggfunc=len,fill_value=0)
df.pivot_table(rows='Hour',cols='Date',aggfunc=sum,fill_value=0)

IIUC你可以這樣做:

假設我們有以下DataFrame:

In [248]: df
Out[248]:
             calldate  billsec disposition
0 2016-11-01 00:05:26      185    ANSWERED
1 2016-11-01 00:01:26        0   NO ANSWER
2 2016-11-01 00:05:19       41    ANSWERED
3 2016-11-01 00:16:02        4    ANSWERED
4 2016-11-02 01:16:02       55    ANSWERED
5 2016-11-02 02:02:02        2   NO ANSWER

我們可以做到以下幾點:

funcs = {
    'billsec': {
        'all':'size',
        'time':'sum'
    },
    'disposition': {
        'lost': lambda x: (x == 'NO ANSWER').sum()
    }
}

(df.assign(d=df.calldate.dt.strftime('%d.%m'), t=df.calldate.dt.hour)
   .groupby(['t','d'])[['billsec','disposition']].agg(funcs)
   .unstack('d', fill_value=0)
   .swaplevel(axis=1)
   .sort_index(level=[0,1], axis=1)
)

收益率:

d 01.11           02.11
    all time lost   all time lost
t
0     4  230    1     0    0    0
1     0    0    0     1   55    0
2     0    0    0     1    2    1

暫無
暫無

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

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