我每十分钟就有一个盘中价格文件。[0:41] 一天。每个日期重复 42 次。下面的多索引应始终将重复的日期“折叠”为一个。
有 62,035 行 x 3 列:
[date, time, price]
.我想编写一个函数来获取十分钟价格的差异,将差异限制在每个唯一日期。
换句话说,09:30 是每天的第一次,16:20 是最后一次:我不能重叠从 16:20 到 09:30 的价格天数之间的差异。对于数据框中的每个唯一日期,差异应从 09:40 - 09:30 开始,并以 16:20 - 16:10 结束。
这是我的尝试。任何建议将不胜感激。
def diffSeries(rounded,data):
'''This function accepts a column called rounded from 'data'
The 2nd input 'data' is a dataframe
'''
df=rounded.shift(1)
idf=data.set_index(['date', 'time'])
data['diff']=['000']
for i in range(0,length(rounded)):
for day in idf.index.levels[0]:
for time in idf.index.levels[1]:
if idf.index.levels[1]!=1620:
data['diff']=rounded[i]-df[i]
else:
day+=1
time+=2
data[['date','time','price','II','diff']].to_csv('final.csv')
return data['diff']
然后我打电话:
data=read_csv('file.csv')
rounded=roundSeries(data['price'],5)
diffSeries(rounded,data)
在回溯中 - 我得到一个Assertion Error
.