首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >熊猫:根据条件在两者之间填入

熊猫:根据条件在两者之间填入
EN

Stack Overflow用户
提问于 2018-06-18 19:53:29
回答 1查看 2.4K关注 0票数 3

我想从两个不同的列中填充两个数字之间的值。我有一个类似于以下(Df)的数据框架,当我在开始列End列中有一个数字时,我只想填充前向的值列。基本上,开始表示一个进程正在开始,而结束意味着该进程正在结束。因此,值列只能在这两者之间填充。

这是一个生成数据的代码,DF是我想要得到的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from datetime import datetime, timedelta
import pandas as pd
import numpy as np
import random
np.random.seed(11) 
date_today = datetime.now()
ndays = 10
df = pd.DataFrame({'date': [date_today + timedelta(days=x) for x in range(ndays)], 
               'Start': pd.Series(np.random.randn(ndays)),     'End':pd.Series(np.random.randn(ndays))})
 df = df.set_index('date')
 df = df.mask(np.random.random(df.shape) < .6)
 df.End[{0,1,2,5,6,9}]=np.nan
 df.Start[5]=1
 df.Start[{1,3,4,2,8, 9}]=np.nan
 df['Value']=np.nan
 df.Value[{0,5}]=[0.3,0.1]
 df

我想获得一个如下所示的dataframe(DF):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                                 End     Start  Value
date                                                 
2018-06-18 22:34:35.964286       NaN  1.749455    0.3
2018-06-19 22:34:35.964286       NaN       NaN    0.3
2018-06-20 22:34:35.964286       NaN       NaN    0.3
2018-06-21 22:34:35.964286  0.561192       NaN    0.3
2018-06-22 22:34:35.964286       NaN       NaN    NaN
2018-06-23 22:34:35.964286       NaN  1.000000    0.1
2018-06-24 22:34:35.964286       NaN       NaN    0.1
2018-06-25 22:34:35.964286       NaN       NaN    0.1
2018-06-26 22:34:35.964286 -0.031075       NaN    0.1
2018-06-27 22:34:35.964286       NaN       NaN    NaN

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-18 20:07:02

试一试:先往前填。然后计算“事件”的数量。如果“事件”的数量为偶数,则用NaN替换值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df['Value'] = df['Value'].fillna(method='ffill')
temp = (df['End'].shift().notnull().astype(int) + df['Start'].notnull().astype(int)).cumsum()
df.loc[temp % 2 == 0, 'Value'] = np.nan

编辑:我们必须使用shift()来修改'End‘,否则它就会计算发生在相同行上的'End’事件。我们希望'End‘事件发生后被计数,这样'Value’就不会在'End‘行中作废。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50920402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文