简单 pandas 数据透视 table 问题

Simple pandas pivot table issue

我有如下数据框:

+-------+--------+----------+---------------+
|       | 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 |

我想做的是创建一个枢轴 table 来计算每个 video_id 和 feed_position 的每个 ios_id 的实例。它看起来像这样:

+------------+---+---+---+---+---+---+----+----+----+----+----+
| 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'

我有什么想法可以实现吗?

您几乎已经掌握了,只是不要在列中包含 'video_id':列仅用于表示枢轴 table 顶部的内容,而索引用于表示左侧的内容.

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