Как проверить, превышает ли дельта времени одну минуту в кадре данных? - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь сравнить различные метки времени в кадре данных и распечатать вывод, если разница во времени превышает одну минуту. Это код, который я пытаюсь запустить:

for e in TestDF['date']:
    delta = TestDF.date.iloc[e+1] - TestDF.date.iloc[e]
    if delta > datetime.timedelta(minutes=1):
        print(TestDF.date.iloc[e+1])
        print(TestDF.date.iloc[e])

, и это ошибка, которую я получаю:

ValueError: Невозможно добавить интегральное значение в метку времени без частоты.

Однако, похоже, это работает:

TimeDifference = TestDF.date.iloc[4]-TestDF.date.iloc[3]
if TimeDifference == datetime.timedelta(minutes=1):
    print(TimeDifference)

Вывод: 0 дней 00: 01: 00

Любая помощь будет оценена.

Спасибо Вы,

Вот некоторые примеры данных:

        date             open    high    low     close
0   2020-01-28 07:00:00 311.83  311.89  311.62  311.81
1   2020-01-28 07:01:00 311.80  311.98  311.80  311.85
2   2020-01-28 07:02:00 311.90  312.00  311.88  311.98
3   2020-01-28 07:03:00 312.00  312.02  311.99  311.99
4   2020-01-28 07:04:00 312.00  312.00  311.91  311.91

1 Ответ

0 голосов
/ 31 января 2020

Вам просто нужно использовать комбинацию сдвигов и булевой фильтрации:

обратите внимание, я изменил ваш последний ряд, чтобы показать разницу больше 1 минуты.

print(df)
                 date    open    high     low   close
0 2020-01-28 07:00:00  311.83  311.89  311.62  311.81
1 2020-01-28 07:01:00  311.80  311.98  311.80  311.85
2 2020-01-28 07:02:00  311.90  312.00  311.88  311.98
3 2020-01-28 07:03:00  312.00  312.02  311.99  311.99
4 2020-01-28 07:06:00  312.00  312.00  311.91  311.91

сначала мы убедитесь, что наша дата является правильной датой

df['date'] = pd.to_datetime(df['date'])


((df['date'] - df['date'].shift()) / np.timedelta64(1,'m')) > 1)
out:
0    False
1    False
2    False
3    False
4     True
Name: date, dtype: bool

, а затем отфильтруйте ее по вашим данным

print(df[((df['date'] - df['date'].shift()) / np.timedelta64(1,'m')) > 1])
  date                 open   high     low   close
4 2020-01-28 07:06:00  312.0  312.0  311.91  311.91
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...