简单的 pandas 数据透视表问题 [英] Simple pandas pivot table issue
本文介绍了简单的 pandas 数据透视表问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个如下数据框:
+-------+--------+----------+---------------+
| | 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 |
我想做的是创建一个数据透视表,该表对每个video_id和feed_position的每个ios_id的实例进行计数.看起来像这样:
What I would like to do is create a pivot table that counts the instances of each ios_id for each video_id and feed_position. It would look like this:
+------------+---+---+---+---+---+---+----+----+----+----+----+
| 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'
But I was met with this error: KeyError: 'Level video_id not found'
关于如何实现此目标的任何想法吗?
Any thoughts on how I can accomplish this?
推荐答案
您几乎拥有它,只是在列中不包含"video_id":列仅用于数据透视表顶部的内容,而索引则是发生在左边的事.
You almost had it, just don't include 'video_id' in columns : columns is just for what's going along the top of the pivot table, and index is for what's going down the left.
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
这篇关于简单的 pandas 数据透视表问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文