所以我有一个'日期'我的数据框中的列,日期的格式如下
0 1998-08-26 04:00:00
如果我只想要年度月份和日期,我该如何放弃琐碎的小时?
答案 0 :(得分:32)
最快的方法是使用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还有一些其他有用的属性,例如.year,.month,.day。
从0.15开始,他们将成为dt属性,因此您可以使用以下命令访问此(以及其他方法):
df.t.dt.normalize()
# equivalent to
pd.DatetimeIndex(df.t).normalize()
答案 1 :(得分:3)
另一个选择
df['my_date_column'].dt.date
会给
0 2019-06-15
1 2019-06-15
2 2019-06-15
3 2019-06-15
4 2019-06-15
答案 2 :(得分:0)
另一种可能性是使用str.split
df['Date'] = df['Date'].str.split(' ',expand=True)[0]
这应该将“日期”列分为标记为0和1的两列。使用日期和时间之间的空格作为拆分指示符。
然后,返回的数据帧的第0列包含日期,而第1列包含时间。 然后,它将原始数据框的“日期”列设置为[0]列,该列应仅为日期。