日中の価格を 10 分ごとに記録したファイルがあります。[0:41] 1 日に 1 回。各日付は 42 回繰り返されます。以下のマルチインデックスは、繰り返される日付を常に 1 つに「折りたたむ」必要があります。
62,035 行 x 3 列あります
[date, time, price]
。10 分間の料金の差を取得する関数を作成し、差をそれぞれの固有の日付に制限したいと思います。
つまり、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
.