大熊猫枢轴表如何添加嵌套列
问题描述:
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你能做到这样:
假设我们有以下的数据帧:
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
欢迎来到*。请将您的数据集作为文本发布,以便人们可以复制并粘贴它们,并将它们用于编码答案 - 当您使用图像时,这是不可能的。请阅读[如何使良好的可重复熊猫示例](http://*.com/questions/20109391/how-to-make-good-reproducible-pandas-examples) – MaxU
@MaxU更正,我希望是正确的 – luboff
可以你还解释了你希望如何计算'All','Lost','Time'列? – MaxU