【问题标题】:Simple pandas pivot table issue简单的熊猫数据透视表问题
【发布时间】: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_iddf 数据框中的一列吗?看看你是否没有混淆数据框。此外,当您使用 video_id 时,在 columns 参数中使用索引变量可能会收到错误。

标签: python pandas pivot-table


【解决方案1】:

您几乎拥有它,只是不要在列中包含“video_id”:columns 仅用于显示数据透视表顶部的内容,而 index 用于显示左侧的内容。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-28
    • 2023-01-11
    • 2022-11-26
    • 2017-01-14
    • 2019-04-28
    • 2012-04-15
    • 1970-01-01
    相关资源
    最近更新 更多