У меня есть кадр данных pandas, df_data
, вы хотите использовать метод pandas index.asof(), чтобы найти ближайшую строку к указанному времени. Время, которое у меня есть, находится в секундах (тип = float64) (см. Ниже).python pandas TypeError: Невозможно сравнить тип «Timestamp» с типом «float»
Первоначально индекс был сделан, чтобы быть DateTimeIndex:
In [12]: df_data.index = pd.to_datetime(df_data.index, coerce=True)
df_data.index.dtype
Out[12]: dtype('<M8[ns]')
Затем я изменил индекс, чтобы быть в секундах от начального времени:
In [22]: ## Convert the index from DateTimeIndex to a float64
## that is the number of seconds from the initial measurement
df_data.index = (df_data.index - df_data.index[0])/np.timedelta64(1,'s')
In [23]: df_data.index.dtype
Out[23]: dtype('float64')
Но когда я пытаюсь использовать метод asof с поплавком, я получаю TypeError:
In [24]: df_data.index.asof(10.0)
...
TypeError: Cannot compare type 'Timestamp' with type 'float'
Я пытался использовать DateTime, datetime.fro mtimestamp и т. д., но не смогли решить проблему.
Хотя это не указано явно в документации, я думаю, что 'работает asof' только с DatetimeIndex, а не с другими типами индексов. – joris
@joris: Я думаю, вы правы в том, что 'asof' ограничен DateTimeIndex. Я изменил свой код, чтобы использовать метод (и сохранить результаты), прежде чем менять индекс с DateTime на float. Я отредактировал этот вопрос выше. – dhltp