我有一组数据,我从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
我感谢所有的帮助。这个网站和社区绝对非常宝贵。
答案 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