J'ai donc une colonne "Date" dans mon cadre de données où les dates ont le format suivant:
0 1998-08-26 04:00:00
Si je veux seulement l'année mois et le jour, comment puis-je laisser tomber l'heure triviale?
Le moyen le plus rapide est d'utiliser la normalisation de DatetimeIndex (vous devez d'abord transformer la colonne en DatetimeIndex):
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 possède également d'autres attributs utiles, par exemple. .année mois jour.
À partir de 0,15, ils seront un attribut dt, vous pouvez donc accéder à cela (et à d'autres méthodes) avec:
df.t.dt.normalize()
# equivalent to
pd.DatetimeIndex(df.t).normalize()
Une autre possibilité est d'utiliser str.split
df['Date'] = df['Date'].str.split(' ',expand=True)[0]
Cela devrait fractionner la colonne "Date" en deux colonnes marquées 0 et 1. Utiliser les espaces blancs entre la date et l'heure comme indicateur de division.
La colonne 0 du cadre de données renvoyé inclut ensuite la date, et la colonne 1 indique l'heure ..__, puis définit la colonne "Date" de votre cadre de données d'origine sur la colonne [0], qui ne doit être que la date.