我有一组数据,这些数据是从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.