从熊猫的日期时间<[M8]中删除时间

use*_*266 27 python datetime dataframe pandas

所以我的数据框中有一个"日期"列,日期的格式如下

0    1998-08-26 04:00:00 
Run Code Online (Sandbox Code Playgroud)

如果我只想要年月和日,我该如何放弃琐碎的小时?

And*_*den 33

最快的方法是使用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
Run Code Online (Sandbox Code Playgroud)

DatetimeIndex还有一些其他有用的属性,例如.year,.month,.day.


从0.15开始,它们将是一个dt属性,因此您可以使用以下命令访问此(以及其他方法):

df.t.dt.normalize()
# equivalent to
pd.DatetimeIndex(df.t).normalize()
Run Code Online (Sandbox Code Playgroud)


mcc*_*dar 6

另外一个选项

df['my_date_column'].dt.date
Run Code Online (Sandbox Code Playgroud)

会给

0        2019-06-15
1        2019-06-15
2        2019-06-15
3        2019-06-15
4        2019-06-15
Run Code Online (Sandbox Code Playgroud)