У меня есть CSV-файл с 12 миллионами записей, который я импортировал как фрейм данных с пандами, который выглядит следующим образом.
pair time open close
0 AUD/JPY 20170102 00:00:08.238 83.774002 84.626999
1 AUD/JPY 20170102 00:00:08.352 83.774002 84.626999
2 AUD/JPY 20170102 00:00:13.662 84.184998 84.324997
3 AUD/JPY 20170102 00:00:13.783 84.184998 84.324997
Столбец времени является строкой, но мне нужен объект datetime для того, чтобы уменьшить выборку данных.и получить значения OHLC.Для функции df.resample требуется индекс типа даты и времени (DatetimeIndex, PeriodIndex или TimedeltaIndex).Я попытался
df['time'] = pd.to_datetime(df['time'])
, но это создает метку времени, и по какой-то причине я не могу преобразовать метки времени в объект datetime.
time = df['time'].dt.to_pydatetime()
df['time'] = time
Это работает при создании отдельного массива и назначении результирующего списка, но как только я включаю его в фрейм данных, он автоматически преобразуется обратно в метки времени.Он не работает даже при создании нового фрейма данных с dtype = 'object' и последующем добавлении списка datetime, как и раньше.
Обходным путем будет преобразование каждой строки в отдельности, но с учетом размера кадра данных это займет годы.Любые предложения?
РЕДАКТИРОВАТЬ: с
time = pd.DataFrame(dtype = 'datetime64')
time = pd.to_datetime(df['time'])
time = time.dt.to_pydatetime()
new = pd.DataFrame({'pair': df['pair'],'time': pd.Series(time, dtype='object'), 'open': df['open'], 'close': df['close']}, dtype ='object')
Теперь я могу получить объект datetime при вызове new ['time'] [0], однако
new['time'].resample('5T')
все еще вызывает ошибку: «Действителен только с DatetimeIndex, TimedeltaIndex или PeriodIndex, но получил экземпляр RangeIndex»
РЕДАКТИРОВАТЬ: ОК, так что, очевидно, мне просто нужно было установить метку времени в качестве индекса кадра данныхи затем повторная выборка применяется без проблем.