[英]pivot a table in python using pandas
我有一個如下表:(當前該表被過濾以僅顯示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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.