У меня есть следующая функция:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import csv
from datetime import datetime, timedelta
def AvgPrice (file,min1):
headers = ['ticker', 'size', 'price', 'unix','type','time']
dtypes = {'ticker': 'str', 'size': 'float', 'price': 'float', 'unix': 'float','type': 'str','time': 'str'}
parse_dates = ['time']
btcnow = pd.read_csv(file, header=None, names=headers, dtype=dtypes, parse_dates=parse_dates)
now3 = pd.DataFrame(btcnow, columns=['size','time','price'])
for i in range (1,11) :
time_interval = timedelta(minutes = min1)
df = now3.loc[now3['size']==i, ['size','time','price']]
# extract time size for merge
df_time_size=df.loc[:, ['time', 'size']].copy()
df_time_size.loc[:, 'time'] = df_time_size.loc[:, 'time'] + time_interval
# inner join dataframe by size&time
df = df_time_size.merge(df[['time', 'size', 'price']], how = 'inner')
df['orig_time'] = df['time'] - time_interval
df['price_orig']=df.loc[[df['time']- time_interval],'price']
#gets the last price at the time
df=df.groupby('time').last().reset_index()
return df
Код фрейма данных now3 следующий:
size time price
0 4.0 2019-11-03 02:42:00 9288.5
1 4.0 2019-11-03 02:42:00 9288.5
2 4.0 2019-11-03 02:42:00 9288.5
3 4.0 2019-11-03 02:42:00 9288.5
4 4.0 2019-11-03 02:42:00 9288.5
... ... ... ...
1048570 15.0 2019-11-05 05:48:00 9331.0
1048571 3851.0 2019-11-05 05:48:00 9331.0
1048572 3793.0 2019-11-05 05:48:00 9331.0
1048573 1000.0 2019-11-05 05:48:00 9331.0
1048574 200.0 2019-11-05 05:48:00 9331.0
Я пытаюсь получить время и цену для каждого размера 1-11 за 5 минут, а также первоначальная цена (5 минут назад). Я получаю сообщение об ошибке в строке: df['price_orig']=df.loc[[df['time']- time_interval],'price']
Я не уверен, как получить цену 5 минут назад.