У меня есть DataFrame, D1:
Date Symbol ICO_to
5/28/2017 18:00 MYST 5/30/2017
5/29/2017 18:00 MYST 5/30/2017
5/30/2017 18:00 MYST 5/30/2017
6/1/2017 18:00 MYST 5/30/2017
6/2/2017 18:00 MYST 5/30/2017
6/3/2017 18:00 MYST 5/30/2017
6/4/2017 18:00 MYST 5/30/2017
6/5/2017 18:00 MYST 5/30/2017
6/6/2017 18:00 MYST 5/30/2017
По этой ссылке я пытаюсь определить двумя способами Значение «Дата» (наиболее близкое совпадение), которое ближе всего к значению даты «ICO_to» (все строки имеют одинаковое значение). Сначала я пытаюсь усечь, что должно удалить строки до этого значения даты:
D1.Date = pd.to_datetime(D1.Date)
D1.rename(columns={'ICO to': 'ICO_to'}, inplace=True)
D1.ICO_to = pd.to_datetime(D1.ICO_to)
ICO_to = D1['ICO_to'][0] #All values in this column are the same, I just want to reference that value
ICO_to = pd.to_datetime(ICO_to) # to make sure the value is a datetime
First_date_row = D1['Date'].truncate(before=ICO_to).iloc[-1] #Remove all rows not after/= to the ICO_to date value
Однако я получаю эту ошибку:
TypeError: Cannot compare type 'Timestamp' with type 'long'
Ну, я знаю, что это значения даты и времени, поэтому не уверен, в чем дело. переменная ICO_to является отметкой времени. Вместо этого я пробую это:
First_date_row = D1['Date'].loc[D1.index.get_loc(datetime.datetime(D1['ICO_to'][0]),method='nearest')] #Identify the row where 'Date' nearest matches 'ICO_to' value at row 0
Используя это вместо усечения, я получаю эту ошибку:
TypeError: an integer is required
Как я могу либо определить значение даты, которое наиболее близко соответствует значению ICO_to, либо удалить все строки до ближайшего совпадения путем усечения? Любой метод будет работать.