【发布时间】:2015-06-01 12:29:30
【问题描述】:
我有一个如下的数据框:
+-------+--------+----------+---------------+
| | 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 的实例。它看起来像这样:
+------------+---+---+---+---+---+---+----+----+----+----+----+
| 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是df数据框中的一列吗?看看你是否没有混淆数据框。此外,当您使用video_id时,在 columns 参数中使用索引变量可能会收到错误。
标签: python pandas pivot-table