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

时间:2013-06-11 01:08:09

标签: python indexing pandas dataframe

我有一组数据,我从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。我想在'2013-06-01'和'2013-06-10'之间选择item_id = 2和report_date的总观看次数,或者沿着这些行选择。

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

Filtering and selecting from pivot tables made with python pandas

我感谢所有的帮助。这个网站和社区绝对非常宝贵。

1 个答案:

答案 0 :(得分: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

请参阅advance indexing in the docs