我有如下时间序列:
ts = pd.Series(index=['2017-01-01','2017-01-03', '2017-01-10'], data=[100,200,500])
ts.index=pd.to_datetime(ts.index)
ts
Out[92]:
2017-01-01 100
2017-01-03 200
2017-01-10 500
dtype: int64
我想在接下来的4天里每天分配价值。例如,在2017-01-01、2017-01-02、2017-01-03、2017-01-04和2017-01-05的每个日期,100将被分配为20。你知道吗
我可以做到以下几点:
days_to_spread_over = 4
results=[]
for datevalue, value in ts.iteritems():
new = pd.Series(index = pd.date_range(start=datevalue, end = datevalue+timedelta(days=days_to_spread_over), freq='D'),
data = [value/float(days_to_spread_over+1)]*(days_to_spread_over+1))
results.append(new)
f = pd.concat(results).groupby(level=0).sum()
print f
2017-01-01 20.0
2017-01-02 20.0
2017-01-03 60.0
2017-01-04 60.0
2017-01-05 60.0
2017-01-06 40.0
2017-01-07 40.0
2017-01-10 100.0
2017-01-11 100.0
2017-01-12 100.0
2017-01-13 100.0
2017-01-14 100.0
dtype: float64
有没有更好的方法来使用熊猫时间序列功能?你知道吗
您可以使用除法和
np.repeat
调用来优化值的计算,但是计算日期范围将需要一个循环。你知道吗这无疑是一个更干净的方法。首先,通过执行除法计算序列的值,然后重复
5
次(在-现在,在每个索引上运行一个循环,调用
pd.date_range
并将值添加到列表j
现在,初始化序列,并执行
groupby
。你知道吗i
j
我将使用
apply
+groupby
相关问题 更多 >
编程相关推荐