[英]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.