我有每日资产价格的pandas数据框: Picture of head of Dataframe
我想用弱平均资产价格创建一个熊猫系列(它也可能是数据框或其他一些数据结构中的附加列)。这意味着我需要计算列中每7个连续实例的平均值,并将其保存为一系列。
Picture of how result should look like
由于我是python的完全新手(以及一般的编程,就此而言),我真的不知道如何开始。
我非常感谢每一个tipp!
答案 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]