对于一些数据预处理,我有一个巨大的数据框,我需要组内的历史性能。然而,由于它是针对目标前一周运行的预测模型,因此我无法使用在该周之间发生的任何数据。每组每天有不定数量的行,这意味着我不能总是在扩展函数上使用移位来丢弃最后7个值,我必须以某种方式调整它之前的行的日期时间。我可以编写自己的函数来适用于团队,但是我的经验通常非常缓慢(尽管很灵活)。这是我做的不对日期空调和只盯着前面的记录:有条件扩展群组聚合熊猫
df.loc[:, 'new_col'] = df_gr['old_col'].apply(lambda x: x.expanding(5).mean().shift(1))
5代表,我想至少5样本大小或把它放到NaN的。
小例子与A组至少提前一周内aggr_mean看着所有样本的平均值:使用@ JulienMarrec的更好的例子
group | dt | value | aggr_mean
A | 01-01-16 | 5 | NaN
A | 03-01-16 | 4 | NaN
A | 08-01-16 | 12 | 5 (only looks at first row)
A | 17-01-16 | 11 | 7 (looks at first three rows since all are
at least a week earlier)
你可以发布你的数据样本吗? [mcve] –
是的,忘了这么做,只是加了:) –