Проверка наличия даты пропуска в данных - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть набор данных, и его индексы состоят из меток времени. Это серия pandas, как показано ниже:

Time                           
2013-09-17 22:08:11           0
2013-09-17 22:08:18           0
2013-09-17 22:08:26           0
2013-09-17 22:08:34           0
2013-09-17 22:08:42           0
2013-09-17 22:08:50           0
2013-09-17 22:08:58           0
2013-09-17 22:09:06           0
2013-09-17 22:09:11           0
2013-09-17 22:09:13           0
2013-09-17 22:09:19           0
2013-09-17 22:09:21           0
2013-09-17 22:09:27           0
2013-09-17 22:09:35           0
2013-09-17 22:09:43           0
Name: dummy_frame, dtype: float64

Данные записываются нерегулярно относительно отметок времени. Теперь я хочу проверить эти данные, если в них есть дата, пропустить или перейти к ней, например, с 2013-09-07 по 2013-12-22. Я могу сделать это просто с проверкой первой и последней даты и сравнить их относительно. Однако мне нужно найти, где происходит этот скачок. Есть ли какой-нибудь простой способ это выяснить?

Спасибо.

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

IIU C:

x = #your series
x.index = pd.to_datetime(x.index)
jumps = x.index.dt.date - x.index.shift(1).dt.date

Это создаст серию, где jump [i] - это разница между jump [i] и jump [i-1], если вы хотите найти, где jump> 1, просто сделайте:

x[jump>1]
0 голосов
/ 06 апреля 2020

Я полагаю, что вы можете просто создать диапазон данных с одинаковым форматом даты и сравнить оба списка:

from datetime import datetime,timedelta

start_date = datetime.strptime("2013-09-07","%Y-%m-%d")
end_date = datetime.strptime("2013-12-22","%Y-%m-%d")

# This will create a list with complete dates
completeDates = [start_date + timedelta(days=x) for x in range(0,(end_dat-start_date ).days + 1)]
completeDates = [d.strftime("%Y-%m-%d") for d in completeDates] # Convert date to string

# Get your list from data frame index, and remove hours
myDates = dummy_frame.index.tolist()

# Is possible that your dates are in datetime obj or in string
# If string
myDates = [d.split()[0] for d in myDates]
# If date
myDates = [d.strftime("%Y-%m-%d") for d in myDates]

# Creates a list with missing data
missingDates = [d for d in completeDates if d not in myDates]

В этом смысле missingDates будет списком, содержащим все пропущенные даты или переходы из вашего фрейм данных. Пожалуйста, дайте мне знать, если это поможет!

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