计算数据框列中每7个实例的平均值

时间:2018-04-21 06:30:10

标签: python pandas dataframe average series

我有每日资产价格的pandas数据框: Picture of head of Dataframe

我想用弱平均资产价格创建一个熊猫系列(它也可能是数据框或其他一些数据结构中的附加列)。这意味着我需要计算列中每7个连续实例的平均值,并将其保存为一系列。

Picture of how result should look like

由于我是python的完全新手(以及一般的编程,就此而言),我真的不知道如何开始。

我非常感谢每一个tipp!

1 个答案:

答案 0 :(得分:0)

我认为需要GroupBy.transform通过numpy.arange创建的numpy数组的模数来获得通用解决方案,同时使用所有索引(例如使用DatetimeIndex):

np.random.seed(2018)

rng = pd.date_range('2018-04-19', periods=20)
df = pd.DataFrame({'Date': rng[::-1], 
                   'ClosingPrice': np.random.randint(4, size=20)})  
#print (df)

df['weekly'] = df['ClosingPrice'].groupby(np.arange(len(df)) // 7).transform('mean')
print (df)
    ClosingPrice       Date    weekly
0              2 2018-05-08  1.142857
1              2 2018-05-07  1.142857
2              2 2018-05-06  1.142857
3              1 2018-05-05  1.142857
4              1 2018-05-04  1.142857
5              0 2018-05-03  1.142857
6              0 2018-05-02  1.142857
7              2 2018-05-01  2.285714
8              1 2018-04-30  2.285714
9              1 2018-04-29  2.285714
10             3 2018-04-28  2.285714
11             3 2018-04-27  2.285714
12             3 2018-04-26  2.285714
13             3 2018-04-25  2.285714
14             1 2018-04-24  1.666667
15             0 2018-04-23  1.666667
16             3 2018-04-22  1.666667
17             2 2018-04-21  1.666667
18             2 2018-04-20  1.666667
19             2 2018-04-19  1.666667

<强>详细

print (np.arange(len(df)) // 7)
[0 0 0 0 0 0 0 1 1 1 1 1 1 1 2 2 2 2 2 2]