我有一个带有两元素分层索引(“月”和“item_id”)的熊猫数据框。每行代表特定月份的特定项目,并具有用于几个感兴趣的数字度量的列。细节无关紧要,所以我们只是说我们在这里有 X 列。
我的问题源于这样一个事实,即项目在他们观察到的月份中会有所不同,这可能是连续的,也可能不是连续的。我需要计算所有项目中 X 的平均值,在第 1 个月、第 2 个月、...、第 n 个月中,有该项目的观察值。
换句话说,我的结果中的第一行应该是每个项目的数据框中第一行的所有项目的平均值,第二个结果行应该是该项目的第二个观察的所有项目的平均值,依此类推.
换句话说,如果我们要为每个项目获取所有按日期排序的行并从 i=1,2,...,n 索引它们,我需要所有项目的平均值为第 1,2 行的值, ...,n。也就是说,我想要所有项目中每个项目的第一次观察的平均值,所有项目的第二次观察的平均值,依此类推。
我怎样才能最好地做到这一点?我不能使用现有的日期索引,所以我需要向数据框添加另一个索引(就像我在上一段中描述的那样),还是我唯一的办法是遍历每个项目的行并保持运行平均值? 这会起作用,但没有利用 pandas 的任何力量。
添加一些示例数据:
item_id date X DUMMY_ROWS
20 2010-11-01 16759 0
2010-12-01 16961 1
2011-01-01 17126 2
2011-02-01 17255 3
2011-03-01 17400 4
2011-04-01 17551 5
21 2007-09-01 4 6
2007-10-01 5 7
2007-11-01 6 8
2007-12-01 10 9
22 2006-05-01 10 10
2006-07-01 13 11
23 2006-05-01 2 12
24 2008-01-01 2 13
2008-02-01 9 14
2008-03-01 18 15
2008-04-01 19 16
2008-05-01 23 17
2008-06-01 32 18
出于解释的目的,我添加了数据中不存在的虚拟行列。我正在描述的操作将有效地给出第 0、6、10、12 和 13 行的平均值(每个项目的第一次观察),然后是第 1、7、11 和 15 行的平均值(第二次观察每个项目,不包括项目 23,因为它只有一个观察值),依此类推。