假人试验数据:
np.random.seed(1)
ts = pd.DataFrame(np.random.rand(1000), index=pd.date_range('1/1/2000', periods=1000))
ts.columns = ['Val']
#ts['Week'] = ts.index.week
ts.loc['2000-01-30':]
Val
2000-01-30 0.878143
2000-01-31 0.098347
2000-02-01 0.421108
2000-02-02 0.957890
2000-02-03 0.533165
2000-02-04 0.691877
2000-02-05 0.315516
2000-02-06 0.686501
2000-02-07 0.834626
首先我过滤数据:
tsSig = ts[ts.Val>.5]
现在是我正在挣扎的部分。我可以创建新的列来显示接下来的(n)mynums
天。你知道吗
mynums = [1,2,3]
for i in mynums:
tsSig['+'+str(+i)+'Days'] = ts['Val'].ix[tsSig.index + pd.DateOffset(days=i)].values
这将为该输出提供(n)天的Val
输出:
Val Val_D1 +1Days +2Days +3Days
2000-01-02 0.720324 0.000114 0.000114 0.302333 0.146756
2000-01-10 0.538817 0.419195 0.419195 0.685220 0.204452
但我真正想要的是这些+nDays值的滚动最小值,如下所示:
所需输出:
Val Val_D1 +1Days +2Days +3Days
2000-01-02 0.720324 0.000114 0.000114 0.000114 0.000114
2000-01-10 0.538817 0.419195 0.419195 0.419195 0.204452
有人能帮忙吗?你知道吗
试试
pd.concat
另一种是反转整个框架,以便可以向前滚动。你知道吗
还有一个新的解决方案更好,但需要预先准备一个小的虚拟框架。你知道吗
还有一个很好的衡量方法,就是非常快。你知道吗
另一种方法是转置数据帧,找到展开的min并再次转置:
相关问题 更多 >
编程相关推荐