DataFrame со всем NaT должен быть timedelta, а не datetime.Python

Программы на Python
Ответить
Anonymous
 DataFrame со всем NaT должен быть timedelta, а не datetime.

Сообщение Anonymous »

У меня есть DataFrame со столбцом min_latency, который представляет собой минимальную задержку, достигнутую предиктором. Если предиктор не удался, значения нет, и поэтому он возвращает min_latency=pd.NaT.
Кадр данных создается из словаря, и тогда и только тогда, когда все строки имеют значение pd.NaT, результирующий столбец будет иметь тип dtype datetime64[ns]. Кажется, невозможно преобразовать его в дельту времени.
df = pd.DataFrame([{'id': i, 'min_latency': pd.NaT} for i in range(10)])
print(df['min_latency'].dtype) # datetime64[ns]
df['min_latency'].astype('timedelta64[ns]') # TypeError: Cannot cast DatetimeArray to dtype timedelta64[ns]

Эта проблема не возникает, если там есть некоторая разница во времени:
df = pd.DataFrame([{'id': i, 'min_latency': pd.NaT} for i in range(10)] + [{'id': -1, 'min_latency': dt.timedelta(seconds=3)}])
print(df['min_latency'].dtype) # timedelta64[ns]


Подробнее здесь: https://stackoverflow.com/questions/793 ... t-datetime
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»