首页 > 解决方案 > 如何根据之前的平均 X 行创建特征?

问题描述

我有一个包含多年数据和许多功能的数据框。

对于这些功能中的每一个,我都想创建一个新功能来平均过去 12 周的数据。

所以说我有每周数据。我想要一个 feature1B 的数据点给我来自 feature1A 的最后 12 行数据的平均值。如果数据是每小时的,我希望对最后 2016 行(24 小时 * 7 天 * 12 周)做同样的事情

例如,假设数据如下所示:

Week    Feature1
1       8846
2       2497
3       1987
4       5294
5       2487
6       1981
7       8973
8       9873
9       8345
10      5481
11      4381
12      8463
13      7318
14      8642
15      4181
16      3871
17      7919
18      2468
19      4981
20      9871

我需要代码来遍历多个特征,创建一个特征名称,例如“目标”。+特征并根据我的标准吐出平均数据(最后 12 行......最后 2016 行......取决于格式) .

Week    Feature1    Feature1-B
1       8846    
2       2497    
3       1987    
4       5294    
5       2487    
6       1981    
7       8973    
8       9873    
9       8345    
10      5481    
11      4381    
12      8463    
13      7318        5717.333333
14      8642        5590
15      4181        6102.083333
16      3871        6284.916667
17      7919        6166.333333
18      2468        6619
19      4981        6659.583333
20      9871        6326.916667

感谢任何帮助。

标签: pythonpandas

解决方案


解决了 Chris A 的有用评论。似乎无法将该评论标记为答案。

import pandas as pd

df = pd.read_csv('data.csv')
cols = df.iloc[:,2:].columns

for c in cols:
    df['12W_AVG.'+c] = df[c].rolling(2016).mean()
    df['12W_AVG.'+c] = df['12W_AVG.'+c].fillna(df['12W_AVG.'+c][2015])
    df['12W_AVG.'+c+'_LAL'] = df['12W_AVG.'+c]*0.9
    df['12W_AVG.'+c+'_UAL'] = df['12W_AVG.'+c]*1.1
    df.drop(c, axis=1, inplace=True)  

推荐阅读