python - 在 python pandas 中创建数据透视表后基于 "rows"数据进行过滤

标签 python indexing pandas dataframe

我有一组数据,这些数据是从 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,这会更大。我想选择“2013-06-01”和“2013-06-10”之间的 item_id = 2 和 report_date 的总 View 或类似的东西。

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

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 .

关于python - 在 python pandas 中创建数据透视表后基于 "rows"数据进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17035108/

相关文章:

python - 可以处理语法错误吗?

python - 访问 lstm 节点中的内部遗忘门值

python - json 或 sqlite3 字典

performance - Postgres 主键 'less than' 运行缓慢

sql-server - 特定列的最佳索引经常用 IS NULL 过滤?

python - Pandas 数据框绘图折线图

python - 随机化/改组 Pandas 数据框中的行

python - 如何将 Countvectorized 数据转换回 Python 中的文本数据?

数据库索引

pandas - 如何对多索引时间序列数据进行分组?