Pandas reindex DataFrame с объектами datetime
Можно ли переиндексировать pandas DataFrame
с помощью столбца, состоящего из объектов datetime?
У меня есть DataFrame df
со следующими столбцами:
Int64Index: 19610 entries, 0 to 19609
Data columns:
cntr 19610 non-null values #int
datflt 19610 non-null values #float
dtstamp 19610 non-null values #datetime object
DOYtimestamp 19610 non-null values #float
dtypes: int64(1), float64(2), object(1)
Я могу легко перевернуть df
вдоль DOYtimestamp
с помощью: df.reindex(index=df.dtstamp)
и DOYtimestamp
имеет следующие значения:
>>> df['DOYtimestamp'].values
array([ 153.76252315, 153.76253472, 153.7625463 , ..., 153.98945602,
153.98946759, 153.98947917])
но я бы хотел переиндексировать DataFrame вдоль dtstamp
, который состоит из объектов datetime, чтобы я генерировал разные временные метки непосредственно из индекса. Столбец dtstamp
имеет значения, которые выглядят так:
>>> df['dtstamp'].values
array([2012-06-02 18:18:02, 2012-06-02 18:18:03, 2012-06-02 18:18:04, ...,
2012-06-02 23:44:49, 2012-06-02 23:44:50, 2012-06-02 23:44:51],
dtype=object)
Когда я пытаюсь и reindex df
вдоль dtstamp
, я получаю следующее:
>>> df.reindex(index=df.dtstamp)
TypeError: can't compare datetime.datetime to long
Я просто не уверен, что мне нужно сделать, чтобы индекс был типа datetime. Любые мысли?
Ответы
Ответ 1
Похоже, вы не хотите переиндексации. Несколько смутно reindex
не для определения нового индекса; скорее, он ищет строки с указанными индексами. Поэтому, если у вас есть DataFrame с индексом [0, 1, 2]
, то выполнение reindex([2, 1, 0])
вернет строки в обратном порядке. Выполнение чего-то типа reindex([8, 9, 10])
не создает новый индекс для строк; скорее, он вернет DataFrame с значениями NaN
, так как нет строк с индексами 8, 9 или 10.
Кажется, что вы хотите просто сохранить одни и те же строки, но сделать для них совершенно новый индекс. Для этого вы можете просто присвоить индекс напрямую. Поэтому попробуйте сделать df.index = df['dtstamp']
.