【发布时间】:2018-06-19 12:48:01
【问题描述】:
我想填充来自两个不同列的两个数字之间的值。我有一个看起来像这样的数据框(df) 我只想在 开始列 和 结束列 中有数字时向前填充 值列。 基本上,开始表示一个进程正在开始,结束表示该进程正在结束。所以值列只能填在这两者之间。
这是生成数据的代码,而 DF 是我想要得到的。
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
我想获得一个如下所示的数据框(DF):
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
提前致谢
【问题讨论】: