2016-04-15 138 views
0

我有一个表如以下蟒的表:(目前该表被过滤以仅显示1个访问者)枢轴采用熊猫

vstid vstrseq date  page timespent 

1  1  1/1/16  a  20.00 
1  1  1/1/16  b  3.00 
1  1  1/1/16  c  131.00 
1  1  1/1/16  d  .000 
1  1  1/1/16  a  3.00 

我想这样:

vstid vstrseq  date  a b c d 
1  1   1/1/16 23 3 131 0 

我试图创建一个数据帧像下面并试图转动它:

ptable=pd.DataFrame(table,columns= ['vstid','vstrseq','date','page','timespent']) 
pvtable=pd.pivot_table(ptable,index='vstid','vstrseq','date'],columns='page',values='timespent',aggfunc=np.sum) 

我有错误味精象下面这样:

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:3824)() 

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:3704)() 

pandas/hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12280)() 

pandas/hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12231)() 

KeyError: 'TIMESPENT'` 

回答

0

您刚刚支架在你的索引定义丢失:

import pandas as pd 
import numpy as np 

df2 = pd.DataFrame({ 'vstid' : 1., 
        'vstrseq' : 1, 
        'date' : "1/1/16", 
        'page' : pd.Categorical(["a","b","c","d", "a"]), 
        'timespent' : pd.Categorical([20.00,3.0, 131.0,0.0, 3.0])}) 
print df2 

df3=pd.pivot_table(df2,index=['vstid','vstrseq','date'],columns='page',values='timespent',aggfunc=np.sum) 

print df3 
+0

代替手工输入,我们可以自动将数据帧挑取决于表中的值 – totalzoom