枢轴采用熊猫
问题描述:
我有一个表如以下蟒的表:(目前该表被过滤以仅显示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'`
答
您刚刚支架在你的索引定义丢失:
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
代替手工输入,我们可以自动将数据帧挑取决于表中的值 – totalzoom