【发布时间】:2021-02-05 09:54:58
【问题描述】:
编写以下循环的任何有效方法? dataPLprocessed 是一个时间序列数据,我想根据滚动 7 天的百分位值计算分数(有关更多说明,请参见下面的循环)。
for i in len(dataPLprocessed):
if (dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i]<.05) or (
dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i]>.95) :
dataPLprocessed['score'] =10
elif (dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] < .1)or (
dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] > .9):
dataPLprocessed['score'] = 9
elif (dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] < .15) or (
dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] > .85):
dataPLprocessed['score'] = 8
elif (dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] < .2) or (
dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] > .8):
dataPLprocessed['score'] = 7
elif (dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] < .25)or (
dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] > .75):
dataPLprocessed['score'] = 6
elif (dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] < .3)or (
dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] > .7):
dataPLprocessed['score'] = 5
elif (dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] < .35) or (
dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] > .65):
dataPLprocessed['score'] = 4
elif (dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] < .4) or (
dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] > .6):
dataPLprocessed['score'] = 3
elif (dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] < .45) or (
dataPLprocessed.rolling(‘7D’)['lineardifference'].rank(pct=True)[i] > .55):
dataPLprocessed['score'] = 2
else:
dataPLprocessed['score'] = 1
【问题讨论】:
标签: python pandas time-series