Ich habe folgendes:
> date1
Timestamp('2014-01-23 00:00:00', tz=None)
> date2
datetime.date(2014, 3, 26)
und ich habe diese Antwort gelesen , die ich pandas.to_datetime()
zum Konvertieren von Timestamps
in datetime
Objekte verwenden könnte, aber es scheint nicht zu funktionieren:
> pd.to_datetime(date1)
Timestamp('2014-01-23 00:00:00', tz=None)
Warum? Wie kann ich zwischen diesen beiden Formaten konvertieren?
to_datetime()
und bestehtto_pydatetime()
und warum das Übergeben einesTimestamp
Objekts an die Klassenmethodepd.to_datetime
nicht funktioniert?Pandas Timestamp to datetime.datetime:
pd.Timestamp('2014-01-23 00:00:00', tz=None).to_pydatetime()
datetime.datetime zu Timestamp
pd.Timestamp(datetime(2014, 1, 23))
quelle
>>> pd.Timestamp('2014-01-23 00:00:00', tz=None).to_datetime() datetime.datetime(2014, 1, 23, 0, 0) >>> pd.Timestamp(datetime.date(2014, 3, 26)) Timestamp('2014-03-26 00:00:00')
quelle
to_datetime
als Objektmethode laufen , aber nicht als Klassenmethode, aber warum?pd.to_datetime
immer zurück zu gebenTimestamp
'Timestamp' object has no attribute 'to_datetime'
to_pydatetime()
.Gehen Sie wie folgt vor , um die Frage zu beantworten, ob Sie von einer vorhandenen Python- Datumszeit zu einem Pandas- Zeitstempel wechseln möchten :
import time, calendar, pandas as pd from datetime import datetime def to_posix_ts(d: datetime, utc:bool=True) -> float: tt=d.timetuple() return (calendar.timegm(tt) if utc else time.mktime(tt)) + round(d.microsecond/1000000, 0) def pd_timestamp_from_datetime(d: datetime) -> pd.Timestamp: return pd.to_datetime(to_posix_ts(d), unit='s') dt = pd_timestamp_from_datetime(datetime.now()) print('({}) {}'.format(type(dt), dt))
Ausgabe:
(<class 'pandas._libs.tslibs.timestamps.Timestamp'>) 2020-09-05 23:38:55
Ich hatte auf einen eleganteren Weg gehofft, aber der
to_posix_ts
ist bereits in meiner Standard-Werkzeugkette enthalten, also gehe ich weiter.quelle