2015-06-01 50 views
0

我有一個數據幀象下面這樣:簡單大熊貓透視表的問題

+-------+--------+----------+---------------+ 
|  | ios_id | video_id | feed_position | 
+-------+--------+----------+---------------+ 
| 11995 | user1 |  199 |    7 | 
| 11996 | user2 |  164 |   18 | 
| 11997 | user3 |  209 |    1 | 
| 11998 | user3 |  85 |    4 | 
| 11999 | user3 |  45 |    6 | 
| 12000 | user3 |  150 |   10 | 
| 12001 | user3 |  207 |   12 | 
| 12002 | user3 |  203 |   26 | 
| 12003 | user4 |  209 |    1 | 
| 12004 | user4 |  202 |    1 | 
| 12005 | user4 |  204 |    1 | 
| 12006 | user4 |  126 |    2 | 
| 12007 | user4 |  72 |    5 | 
| 12008 | user4 |  108 |   10 | 
| 12009 | user4 |  85 |   11 | 

我想這樣做的是創建一個計算每個ios_id每個VIDEO_ID和feed_position的情況下,數據透視表。它應該是這樣的:

+------------+---+---+---+---+---+---+----+----+----+----+----+ 
| Row Labels | 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 18 | 26 | 
+------------+---+---+---+---+---+---+----+----+----+----+----+ 
|   45 | | | | | 1 | | | | | | | 
|   72 | | | | 1 | | | | | | | | 
|   85 | | | 1 | | | | | 1 | | | | 
|  108 | | | | | | | 1 | | | | | 
|  126 | | 1 | | | | | | | | | | 
|  150 | | | | | | | 1 | | | | | 
|  164 | | | | | | | | | | 1 | | 
|  199 | | | | | | 1 | | | | | | 
|  202 | 1 | | | | | | | | | | | 
|  203 | | | | | | | | | | | 1 | 
|  204 | 1 | | | | | | | | | | | 
|  207 | | | | | | | | | 1 | | | 
|  209 | 2 | | | | | | | | | | | 
+------------+---+---+---+---+---+---+----+----+----+----+----+ 

我想:

pd.pivot_table(df, values=['ios_id'], 
       index=['video_id'], columns=['video_id', 
       'feed_position'], aggfunc=np.count_nonzero) 

但我遇到了這個錯誤:KeyError: 'Level video_id not found'

我如何能做到這一點有什麼想法?

+0

'video_id'是'df'數據框中的一列嗎?看看你是不是混淆了數據框。此外,在使用'video_id'時,您可能會在列參數中使用索引變量接收到錯誤。 – Parfait

回答

1

你幾乎已經擁有它了,只是不在列中包含'video_id':列僅僅是爲了說明數據透視表頂部的內容,而索引則指向左邊的內容。

pd.pivot_table(df2, columns = ['feed_position'], 
        index = ['video_id'], 
        aggfunc= np.count_nonzero) 

       ios_id          
feed_position  1 2 4 5 6 10 11 12 18 26 
video_id             
45    NaN NaN NaN NaN 1 NaN NaN NaN NaN NaN 
72    NaN NaN NaN 1 NaN NaN NaN NaN NaN NaN 
85    NaN NaN 1 NaN NaN NaN 1 NaN NaN NaN 
108    NaN NaN NaN NaN NaN 1 NaN NaN NaN NaN 
126    NaN 1 NaN NaN NaN NaN NaN NaN NaN NaN 
150    NaN NaN NaN NaN NaN 1 NaN NaN NaN NaN 
164    NaN NaN NaN NaN NaN NaN NaN NaN 1 NaN 
202    1 NaN NaN NaN NaN NaN NaN NaN NaN NaN 
203    NaN NaN NaN NaN NaN NaN NaN NaN NaN 1 
204    1 NaN NaN NaN NaN NaN NaN NaN NaN NaN 
207    NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN 
209    2 NaN NaN NaN NaN NaN NaN NaN NaN NaN