2 votes

convertir de 'to_julian_date()' à 'np.datetime64'

Voir le tableau ci-dessous

dt = DatetimeIndex(['2016-01-01', '2016-01-01', '2016-01-21', '2016-01-21'], dtype='datetime64[ns]', name=u'date', freq=None)

Je convertis ce qui précède to_julian_date() dtype

j = dt.to_julian_date()
Float64Index([2457388.5, 2457388.5, 2457408.5, 2457408.5], dtype='float64')

comment convertir j retour à dt

J'ai essayé

dt = pd.to_datetime(j, errors = 'coerce')

il convertit j en objet datetime, mais les valeurs ne sont pas les mêmes, voici le résultat

DatetimeIndex(['1970-01-01 00:00:00.002457388',
           '1970-01-01 00:00:00.002457388',
           '1970-01-01 00:00:00.002457408',
           '1970-01-01 00:00:00.002457408'],
          dtype='datetime64[ns]', freq=None)

5voto

piRSquared Points 159

Dates juliennes sont le nombre de jours d'il y a longtemps. Un temps antérieur à l'époque des pandas Timestamp. Nous nous référons au début du moment où un système de suivi du temps commence à suivre le temps. Pour les Timestamp c'est-à-dire "1970-01-01". Ce que je fais, c'est que j'obtiens le Timestamp époque avec pd.to_datetime(0, unit='s') . Il s'agit de la première pandas.Timestamp . J'attribue ensuite le nombre de jours de cette Timestamp à partir du début de la date julienne en exécutant to_julian_date() sur ce point Timestamp . Maintenant que j'ai le nombre de jours entre le début de la date de début julienne et le Timestamp Je soustrais cette date à chacune des dates juliennes de l'époque. j et cela devient le nombre de jours à partir du Timestamp (ou '1970-01-01' ). Je peux alors utiliser pd.to_datetime(j - epoch, unit='D') pour me donner la Timestamps où chacune de mes valeurs représente le nombre de jours à partir du Timestamp époque.

J'espère que c'est clair ;-)

trouver d'abord le julian_date pour les pd.Timestamp époque

epoch = pd.to_datetime(0, unit='s').to_julian_date()

la conversion se fait avec pd.to_datetime en utilisant le paramètre unit='D'

pd.to_datetime(j - epoch, unit='D')

DatetimeIndex(['2016-01-01', '2016-01-01', '2016-01-21', '2016-01-21'], dtype='datetime64[ns]', freq=None)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X