首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用另一列的值填充NaN值

用另一列的值填充NaN值
EN

Data Science用户
提问于 2023-04-05 12:09:25
回答 3查看 50关注 0票数 0

我有这样的数据:

代码语言:javascript
复制
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。我想要的是:

代码语言:javascript
复制
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相加,并将其分配给另一列。

EN

回答 3

Data Science用户

回答已采纳

发布于 2023-04-05 23:13:15

滚动函数与总和函数一起使用,如下所示:

代码语言:javascript
复制
df['Rain6Hour'] = df['Rain1Hour'].rolling(min_periods=1, window=6).sum()
票数 0
EN

Data Science用户

发布于 2023-04-05 21:31:55

我也不知道如何在.rolling()方法中使用自定义索引列表,但您可以尝试使用.shift()方法。fill_value选项.shift()将帮助您避免NaN问题。例如,要创建一个等于(时间k) +(时间k-2) +(时间k-4)之和的列:

代码语言:javascript
复制
df['0_2_4']=df['1hr']\
            +df['1hr'].shift(2,fill_value=0)\
            +df['1hr'].shift(4,fill_value=0)
票数 0
EN

Data Science用户

发布于 2023-04-05 13:34:01

您可以执行以下操作:

代码语言:javascript
复制
# fill missing values in Rain6Hour with shifted values from Rain1Hour
df['Rain6Hour'] = df['Rain6Hour'].fillna(df['Rain1Hour'].shift(5))
票数 -1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/120727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档