这是我的原始数据
原始数据这里是数据(包括类型)后,我添加列'Date_2wks_Ago'在Pandas
输入图片描述
我想添加一个新的列'Rainfall_Last7Days',用于计算上周每天的总降雨量。
所以(忽略其他不相关的列)它看起来像这样…
理想数据集
有人知道如何在Pandas中做到这一点吗?
我的数据大约有1000个观测值,所以不是很大。
我想你要找的是rolling()函数
本节重新创建表
的简化版本import pandas as pd
import numpy as np
# Create df
rainfall_from_9am=[4.6
,0.4
,3.6
,3.5
,3.2
,5.5
,2.2
,1.3
,0
,0
,0.04
,0
,0
,0
,0.04
,0.4]
date=['2019-02-03'
,'2019-02-04'
,'2019-02-05'
,'2019-02-06'
,'2019-02-07'
,'2019-02-08'
,'2019-02-09'
,'2019-02-10'
,'2019-02-11'
,'2019-02-12'
,'2019-02-13'
,'2019-02-14'
,'2019-02-15'
,'2019-02-16'
,'2019-02-17'
,'2019-02-18'
]
# Create df from list
df=pd.DataFrame({'rainfall_from_9am':rainfall_from_9am
,'date':date
})
这部分计算当前和前6条记录的降雨量滚动总和。
df['rain_last7days']=df['rainfall_from_9am'].rolling(7).sum()
print(df)
输出:
date rainfall_from_9am rain_last7days
0 2019-02-03 4.60 NaN
1 2019-02-04 0.40 NaN
2 2019-02-05 3.60 NaN
3 2019-02-06 3.50 NaN
4 2019-02-07 3.20 NaN
5 2019-02-08 5.50 NaN
6 2019-02-09 2.20 23.00
7 2019-02-10 1.30 19.70
8 2019-02-11 0.00 19.30
9 2019-02-12 0.00 15.70
10 2019-02-13 0.04 12.24
11 2019-02-14 0.00 9.04
12 2019-02-15 0.00 3.54
13 2019-02-16 0.00 1.34
14 2019-02-17 0.04 0.08
15 2019-02-18 0.40 0.48
注意这个输出与你原来的问题中的例子不完全匹配。你能帮忙验证一下你所追求的正确逻辑吗?