我有一个带有两级分层索引(“item_id”和“日期”)的熊猫数据框。每行都有特定月份中特定项目的各种指标的列。这是一个示例:
total_annotations unique_tags
date item_id
2007-04-01 2 30 14
2007-05-01 2 32 16
2007-06-01 2 36 19
2008-07-01 2 81 33
2008-11-01 2 82 34
2009-04-01 2 84 35
2010-03-01 2 90 35
2010-04-01 2 100 36
2010-11-01 2 105 40
2011-05-01 2 106 40
2011-07-01 2 108 42
2005-08-01 3 479 200
2005-09-01 3 707 269
2005-10-01 3 980 327
2005-11-01 3 1176 373
2005-12-01 3 1536 438
2006-01-01 3 1854 497
2006-02-01 3 2206 560
2006-03-01 3 2558 632
2007-02-01 3 5650 1019
如您所见,每个项目的所有连续月份都没有观测值。我想要做的是重新索引数据框,以便每个项目在指定范围内都有每个月的行。现在,对于任何给定的项目,这很容易实现。因此,对于 item_id 99,例如:
baseDateRange = pd.date_range('2005-07-01','2013-01-01',freq='MS')
data.xs(99,level='item_id').reindex(baseDateRange,method='ffill')
但是使用这种方法,我必须遍历所有 item_id,然后将所有内容合并在一起,这似乎过于复杂了。
那么如何将其应用于完整的数据框,填充观察结果(还有 item_id 索引),使得每个 item_id 都正确填充了 baseDateRange 中所有日期的行?