Выбирайте строки с фиксированным интервалом времени в фрейме данных pandas с индексом Datetime - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть датафрейм для панд, проиндексированный DateTime с часа «00:00:00» до часа «23:59:00» (с шагом в минуту, секунды не учитываются).

in: df.index
out: DatetimeIndex(['2018-10-08 00:00:00', '2018-10-08 00:00:00',
           '2018-10-08 00:00:00', '2018-10-08 00:00:00',
           '2018-10-08 00:00:00', '2018-10-08 00:00:00',
           '2018-10-08 00:00:00', '2018-10-08 00:00:00',
           '2018-10-08 00:00:00', '2018-10-08 00:00:00',
           ...
           '2018-10-08 23:59:00', '2018-10-08 23:59:00',
           '2018-10-08 23:59:00', '2018-10-08 23:59:00',
           '2018-10-08 23:59:00', '2018-10-08 23:59:00',
           '2018-10-08 05:16:00', '2018-10-08 07:08:00',
           '2018-10-08 13:58:00', '2018-10-08 09:30:00'],
          dtype='datetime64[ns]', name='DateTime', length=91846, freq=None)

Теперь яЯ хочу выбрать определенные интервалы, скажем, каждую 1 минуту или каждый 1 час, начиная с «00:00:00», и извлекать все строки, которые разделяются последовательно.

Я могу получить все интервалы, скажем, первыечасовой интервал, с

df.between_time("01:00:00","00:00:00")

Но я хочу иметь возможность

(а) получать только все моменты, которые являются определенными интервалами, кроме (б) получать все интервалы в 1 часбез необходимости вручную запрашивать их 24 раза.Как мне увеличить DatetimeIndex внутри командыween_time?Есть ли лучший способ, чем это?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Если у вас нет данных о фреймах данных, я бы предложил сделать это со словарем фреймов данных, таким как:

import pandas as pd

dfdict={}

for i in range(0,10):
    dfdict[i]=pd.DataFrame()

print(dfdict)

, поскольку вы увидите, что они действительно являются dfs

out[1]
{0: Empty DataFrame
Columns: []
Index: [], 1: Empty DataFrame
Columns: []
Index: [], 2: Empty DataFrame
Columns: []
Index: [], 3: Empty DataFrame
Columns: []
Index: [], 4: Empty DataFrame
Columns: []
Index: [], 5: Empty DataFrame
Columns: []
Index: [], 6: Empty DataFrame
Columns: []
Index: [], 7: Empty DataFrame
Columns: []
Index: [], 8: Empty DataFrame
Columns: []
Index: [], 9: Empty DataFrame
Columns: []
Index: []}

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

0 голосов
/ 20 февраля 2019

Я бы решил эту проблему с помощью маскирования, а не создания новых информационных фреймов.Например, вы можете добавить столбец df['which_one'] и установить разные номера для каждого подмножества.Затем вы можете получить доступ к подмножеству, вызвав df[df['which_one']==x], где x - это подмножество, которое вы хотите выбрать.Вы по-прежнему можете делать другие условные операторы и почти все остальное, что Pandas должен был предложить, получая доступ к данным таким образом.

PS Существуют и другие способы доступа к данным, которые могут быть быстрее.Я просто использовал то, что мне удобнее, иначе было бы df[df['which_one'].eq(x)].

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