在python pandas中创建数据透视表后,基于“行”数据进行过滤

我有一组数据,这些数据是从SQL数据库获取并读入pandas数据框的.产生的df大约有2.5亿行,并且每天都在增长.因此,我想对表进行透视处理,以便为我提供一个可以使用的小得多的表(几千行).

该表看起来像这样,但更大:

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)部分中看不到如何选择和/或过滤掉值.我只能在“值”部分(例如:视图)中过滤/选择数据.这个问题是相似的,最后问问者问了我所问的同一问题,但从未得到回答.我只是想尝试引起人们的注意.

Filtering and selecting from pivot tables made with python pandas

我感谢所有帮助.这个网站和社区绝对是无价之宝.

解决方法:

您应该能够像这样对它进行切片:

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

参见advance indexing in the docs.

上一篇:PHP替代OpenGrok的替代方法


下一篇:是否可以通过A减B索引mysql表以进行排序?