DataFrame не разрешает преобразование временных меток для повторной выборки - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть 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»

РЕДАКТИРОВАТЬ: ОК, так что, очевидно, мне просто нужно было установить метку времени в качестве индекса кадра данныхи затем повторная выборка применяется без проблем.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Хорошо, так что, очевидно, мне просто нужно было установить временную метку в качестве индекса информационного кадра, а затем повторная выборка применяется без проблем.Нет необходимости беспокоиться о преобразовании меток времени или о чем-либо еще, в любом случае, спасибо за ответ.

0 голосов
/ 19 декабря 2018

вы можете попробовать:

import datetime as dt
df['time']=pd.to_datetime(df['time'], format="%y/%m/%d")
df['timeconvert'] = df['time'].dt.date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...