Как добавить минуты к данным времени? - PullRequest
0 голосов
/ 15 июня 2019

У меня есть пандас DataFrame, который выглядит следующим образом:

    Symbol  Date        Time            Bid Price   Bid Exchange    Bid Size    Ask Price   Ask Exchange    Ask Size
0    ABC  2014-03-03  09:30:00.033000   43.16           Z               1       43.69           P               3
1    ABC  2014-03-03  09:30:00.038000   43.17           P               3       43.69           P               3
2    ABC  2014-03-03  09:30:00.039000   43.17           P               4       43.69           P               3
3    ABC  2014-03-03  09:30:00.151000   43.3            P               6       43.69           P               3
4    ABC  2014-03-03  09:30:00.151000   43.3            P               6       43.42           P               4

Я хочу извлекать каждую минуту данных и делать некоторые вычисления.Чтобы сделать это, итеративно, я бы добавил 1 минуту к start_time и назвал бы это end_time, затем выбрал данные между start_time и end_time и сделал мой анализ;мой код выглядит так:

import numpy as np
import pandas as pd
import datetime
from datetime import date, time, timedelta

df = pd.read_csv('some_data_file.csv'))

#Converting strings to date and time
df['Date'] = pd.to_datetime(df['Date'])
df['Time'] = pd.to_datetime(df['Time'])
df['Date'] = df['Date'].dt.date
df['Time'] = df['Time'].dt.time

start_date = datetime.date(2014, 3, 3)
end_date = datetime.date(2014, 3, 4)

day_i = df.loc[df['Date']==start_date]

start_time = day_i['Time'][0]

end_time = start_time + timedelta.time(minutes=1)

interval_i = day_i.loc[(day_i['Time'] >= start_time) & (day_i['Time'] <= end_time)]

start_time формат datetime.time(9, 30, 0, 33000).

Когда я запускаю:

end_time = start_time + timedelta.time(minutes=1) 

Я получаю эту ошибку:

AttributeError: type object 'datetime.timedelta' has no attribute 'time'

1 Ответ

1 голос
/ 15 июня 2019

Сначала убедитесь, что тип для start_time и end_time имеет тип времени и НЕ тип datetime . Преобразовать, если нужно, время.

type(start_time)

Пример:
start_time = (9, 30, 0, 0) end_time = start_time + timedelta(seconds=60)

Вы должны получить: end_time = (9, 30, 1, 0)

Вы также можете попробовать панд между_тем ()
myrows = df['Time'].between_time(start_time, end_time)

DataFrame.between_time (start_time, end_time, include_start = True, include_end = True) [источник] Выберите значения между определенным временем дня (например, 9: 00-9: 30 AM).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...