wake-up-neo.com

Löschzeit von datetime <[M8] in Pandas

Ich habe also eine Datumsspalte in meinem Datenrahmen, in der die Datumsangaben das folgende Format haben

0    1998-08-26 04:00:00 

Wenn ich nur das Jahr Monat und Tag haben möchte, wie kann ich die triviale Stunde fallen lassen?

24
user2926266

Am schnellsten geht es mit der Normalisierung von DatetimeIndex (Sie müssen die Spalte erst zu einem DatetimeIndex machen):

In [11]: df = pd.DataFrame({"t": pd.date_range('2014-01-01', periods=5, freq='H')})

In [12]: df
Out[12]:
                    t
0 2014-01-01 00:00:00
1 2014-01-01 01:00:00
2 2014-01-01 02:00:00
3 2014-01-01 03:00:00
4 2014-01-01 04:00:00

In [13]: pd.DatetimeIndex(df.t).normalize()
Out[13]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2014-01-01, ..., 2014-01-01]
Length: 5, Freq: None, Timezone: None

In [14]: df['date'] = pd.DatetimeIndex(df.t).normalize()

In [15]: df
Out[15]:
                    t       date
0 2014-01-01 00:00:00 2014-01-01
1 2014-01-01 01:00:00 2014-01-01
2 2014-01-01 02:00:00 2014-01-01
3 2014-01-01 03:00:00 2014-01-01
4 2014-01-01 04:00:00 2014-01-01

DatetimeIndex hat auch einige andere nützliche Attribute, z. .Jahr Monat Tag.


Ab 0.15 sind sie ein dt-Attribut, sodass Sie auf dieses (und andere Methoden) zugreifen können:

df.t.dt.normalize()
# equivalent to
pd.DatetimeIndex(df.t).normalize()
32
Andy Hayden

Andere Option

df['my_date_column'].dt.date

Würde geben

0        2019-06-15
1        2019-06-15
2        2019-06-15
3        2019-06-15
4        2019-06-15
1
mccandar

Eine andere Möglichkeit ist die Verwendung von str.split

df['Date'] = df['Date'].str.split(' ',expand=True)[0]

Dies sollte die Spalte 'Date' in zwei mit 0 und 1 markierte Spalten aufteilen. Verwenden Sie den Whitespace zwischen dem Datum und der Uhrzeit als Split-Indikator.

Spalte 0 des zurückgegebenen Datenrahmens enthält dann das Datum, und Spalte 1 enthält die Zeit . Dann setzt sie die Spalte 'Date' des ursprünglichen Datenrahmens auf Spalte [0], die nur das Datum sein sollte.