Soru Timedelta'yı kayan noktaya dönüştür


İki zamanın çıkarılmasından bir zaman çizelgesi nesnesi aldım. Daha fazla hesaplama için bu değere kayan nokta olarak ihtiyacım var. Bulduğum her şey, kayan noktalarla hesaplamayı mümkün kılar, ancak sonuç hala bir timedelta nesnesidir.

time_d = datetime_1 - datetime_2
time_d_float = float(time_d)

çalışmıyor.


32
2018-01-28 19:10


Menşei




Cevaplar:


Kullanabilirsiniz total_seconds yöntem:

time_d_float = time_d.total_seconds()

44
2018-01-28 19:11



AttributeError alırım: 'datetime.timedelta' nesnesinin 'total_seconds' özniteliği yoktur. - aaa90210
timedelta.total_seconds() Python 2.7 / 3.2'de tanıtıldı - Will Hardy


Python'un son sürümlerinde, ikiye ayırabilirsiniz. timedeltabir şamandıra vermek. Bu, saniyeler dışında birimde olması gereken değere ihtiyacınız varsa yararlıdır.

time_d_min = time_d / datetime.timedelta(minutes=1)
time_d_ms  = time_d / datetime.timedelta(milliseconds=1)

13
2018-01-28 22:57



Python 2.7 üzerinde çalışmıyor timedelta(hours=2, minutes=30) / timedelta(hours=1) yükseltmeler TypeError: unsupported operand type(s) for /: 'datetime.timedelta' and 'datetime.timedelta'. - Sardathrion
@Sardathrion: Bu özellik sadece 3.x'te tanıtılmış gibi görünüyor. - dan04


Kullanabilirsin numpy bunu çözmek için:

import pandas as pd
import numpy as np

time_d = datetime_1 - datetime_2

#for a single value
number_of_days =pd.DataFrame([time_d]).apply(np.float32)

#for a Dataframe
number_of_days = time_d.apply(np.float32)

Umarım yardımcı olur!


2
2017-09-21 19:51



Bu hatayı önerinizle alıyorum: AttributeError: 'datetime.timedelta' nesnesinin 'apply' özelliği yoktur - lancew
Merhaba @lancew, bunu yakaladığın için teşekkürler! Bu durumda, bir veri çerçevesini float'a dönüştürmem gerekiyordu, bu yüzden benim için işe yaradı. Benzersiz bir değeri dönüştürmek isterseniz, bunu yapabilirsiniz: pd.DataFrame([time_d]).apply(np.float32) . Bu durumda, hem panda'ları pd 'hem de' nump np 'olarak almanız gerekir. Yine de başka yollardan test yapacağım. Çalışırsa lütfen bana bildirin. - Monique Marins


Kayan sayı olarak gün sayısına ihtiyaç duyduysanız, timedelta'nın gün özelliğini kullanabilirsiniz.

time_d = datetime_1 - datetime_2
number_of_days = float(time_d.days)

0
2018-04-10 09:00





Daha önce aynı sorunu yaşadım ve float ile saniye cinsinden Tahmini süre elde etmek için timedelta.total_seconds kullandım ve işe yarıyor. Umarım bu senin için çalışır.

from datetime import timedelta,datetime

time_d = datetime_1 - datetime_2

time_d.total_seconds()                  

-4
2018-06-02 13:07



Bu, şu anda kabul edilen cevap üzerinden nasıl bir şey ekliyor? - Ironcache