Хорошо, я только учусь работать с объектами DatetimeIndex и Dateframe. Я столкнулся с новой проблемой, с которой я не могу напрямую увидеть решение, и я надеялся, что у кого-то может быть элегантное решение с использованием pandas функций, о которых я, возможно, еще не знаю.
Ситуация следующим образом: С одной стороны, у меня есть очень большой Dataframe со множеством строк и нескольких столбцов, включая столбец с именем starttime , который имеет временные метки в качестве значений. Может быть две или более строк с одинаковым значением starttime .
starttime endtime ... y x
id ...
0 2015-10-11 00:00:55+00 2015-10-11 00:00:55+00 ... 1 other
1 2015-10-11 15:10:42+00 2015-10-11 15:10:42+00 ... 1 other
2 2014-10-21 10:25:44+00 2014-10-21 10:25:44+00 ... 1 other
3 2014-10-21 10:27:28+00 2014-10-21 10:27:28+00 ... 1 other
4 2014-10-21 10:30:27+00 2014-10-21 10:30:27+00 ... 1 other
.. ... ... ... ... ...
С другой стороны, у меня есть объект DatetimeIndex, содержащий множество непересекающихся дат. Очень важно знать, что эти даты не образуют полного диапазона между датами A и B, поэтому между ними определенно есть «дыры», поэтому я не могу просто применить date_range.
DatetimeIndex(['2014-12-12', '2014-12-15', '2014-12-16', '2014-12-17',
'2014-12-18', '2014-12-19', '2014-12-20', '2014-12-21',
'2015-03-02', '2015-03-03',
...],
dtype='datetime64[ns]', length=xyz, freq=None)
И здесь встает вопрос : Теперь мне нужно удалить все строки Dataframe на место, значение starttime которых не представлено с датой в DatetimeIndex. Время в h: m: s не имеет значения, поэтому если у меня есть дата «2014-12-12» и две строки «2014-12-12 00: 00: 55 + 00» и «2014-12-12 15: 10: 42 + 00 "оба должны быть включены. Получившийся обрезанный Dataframe должен также содержать все столбцы, которые у него были раньше.
Мой первый итеративный подход состоял в том, чтобы взять одну дату DatetimeIndex после другой и go через все строки Dataframe и скопировать строку если это в тот же день в новом кадре, но я подумал, что для этого должен быть лучший способ, поскольку у меня, очевидно, возникают серьезные проблемы с производительностью, если в кадре данных слишком много строк.