我有这样的数据:
Time Rain1Hour Rain6Hour
0 0 NaN
1 1 NaN
2 1 NaN
3 1 NaN
4 1 NaN
5 1 NaN
6 1 NaN
7 0 NaN其中,Rain1Hour是最后一个小时的雨,而Rain6Hour是最后6个小时的累积雨,这意味着我要使用Rain1Hour列的数据,最后6小时的降雨量之和。如何用来自Rain6Hour的数据填充列Rain1Hour。我想要的是:
Rain6Hour
0
1
2
3
4
5
6
5例如,第四行是3,因为在过去的3小时内,每小时下1次雨,在0小时内下0次雨。
我正在使用Python,数据在Pandas dataframe中。
编辑:在使用lcrmorin提到的滚动功能解决了这个问题之后,我现在有了另一个与此密切相关的问题。是否可能只对某些特定行进行求和?例如,如果我当前处于Time6中,我希望将列time=6的Rain1Hour行的值时间=6-2和时间= 6-4相加,并将其分配给另一列。
发布于 2023-04-05 23:13:15
发布于 2023-04-05 21:31:55
我也不知道如何在.rolling()方法中使用自定义索引列表,但您可以尝试使用.shift()方法。fill_value选项.shift()将帮助您避免NaN问题。例如,要创建一个等于(时间k) +(时间k-2) +(时间k-4)之和的列:
df['0_2_4']=df['1hr']\
+df['1hr'].shift(2,fill_value=0)\
+df['1hr'].shift(4,fill_value=0)发布于 2023-04-05 13:34:01
您可以执行以下操作:
# fill missing values in Rain6Hour with shifted values from Rain1Hour
df['Rain6Hour'] = df['Rain6Hour'].fillna(df['Rain1Hour'].shift(5))https://datascience.stackexchange.com/questions/120727
复制相似问题