3

我有一组从 SQL 数据库中获取并读入 pandas 数据框的数据。生成的 df 大约有 250M 行并且每天都在增长。因此,我想旋转表格以给我一个小得多的表格(几千行)。

该表看起来像这样,但要大得多:

data

  report_date             item_id        views   category
0  2013-06-01                   2            3          a
1  2013-06-01                   2            2          b
2  2013-06-01                   5           16          a 
3  2013-06-01                   2            4          c
4  2013-06-01                   2            5          d

我想通过忽略“类别”列并仅按日期和 item_id 获取视图总数来使这个更小。

我正在这样做:

pivot = data.pivot_table(values=['views'], rows=['report_date','item_id'], aggfunc='sum')

                                 views  
report_date item_id
2013-06-01        2                 14           
2013-06-01        5                 16

现在想象一下,随着数据范围持续数月和数千个 item_id,这要大得多。我想选择 item_id = 2 和 report_date 在 '2013-06-01' 和 '2013-06-10' 或类似这些方面的总视图。

我已经连续搜索了几个小时,但我看不到如何在“行”(即 report_date 和 item_id)部分中选择和/或过滤掉值。我只能在“值”部分过滤/选择数据(例如:视图)。这个问题很相似,最后提问者评论了我问的同一个问题,但从未得到回答。我只是想尝试引起人们的注意。

从使用 python pandas 制作的数据透视表中过滤和选择

我感谢所有的帮助。这个网站和社区绝对是无价的。

4

1 回答 1

3

你应该能够像这样切片它:

In [11]: pivot.ix[('2013-06-01', 3):('2013-06-01', 6)]
Out[11]:
                     views
report_date item_id
2013-06-01  5           16

请参阅文档中的高级索引

于 2013-06-11T01:42:44.837 回答