所以我在数据框中有一个“日期”列,其中日期的格式如下
0 1998-08-26 04:00:00
如果我只想要年月日,该如何减少琐碎的小时数?
最佳答案
最快的方法是使用DatetimeIndex的规范化(您首先需要将列设为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还具有其他一些有用的属性,例如。年月日。
从0.15开始,它们将成为dt属性,因此您可以使用以下方法(和其他方法)进行访问:
df.t.dt.normalize()
# equivalent to
pd.DatetimeIndex(df.t).normalize()