G'day!
在有限的时间内使用Python和Pandas时,一个问题又一次出现-如果我的输入数据具有长格式的日期/时间,如何将其更改为较短的版本?
例如,输入文件中的日期为:
10/10/2019 5:52:30 AM
如果要执行日期/时间操作,则需要将其转换为日期时间:
df = pd.to_datetime(df['date'], format="%d/%m/%Y %H:%M:%S %p")
所以现在我有全长格式的datetime对象。但是,如果我只需要日/月/年呢?
我当然可以将它们转换回字符串,然后将其转换回日期时间格式。
df = df['date'].dt.strftime("%d/%m/%Y")
df = pd.to_datetime(df['date'], format="%d/%m/%Y")
看这件事让我的眼睛受伤...应该有一种更简单的方法,对吗?
答案 0 :(得分:1)
#Generate the data
df = pd.DataFrame({'year': [2015, 2016],
'month': [2, 3],
'day': [4, 5],
'hour': [2, 23]})
df['Date']=pd.to_datetime(df)
#Floor and round datetime
df['Date'].dt.floor('d')
df['Date'].dt.round('d')
dt.floor
的输出是:
0 2015-02-04
1 2016-03-05
Name: Date, dtype: datetime64[ns]
和dt.round
:
0 2015-02-04
1 2016-03-06
Name: Date, dtype: datetime64[ns]