Python 将日期更改为较短的格式

Python 将日期更改为较短的格式,python,pandas,datetime,Python,Pandas,Datetime,再见 在我有限的时间内使用Python和Pandas时,一个问题一再出现——如果我的输入数据的日期/时间格式较长,如何将其更改为较短的版本 例如,输入文件中的日期为: 10/10/2019 5:52:30 AM 如果要使用它执行日期/时间操作,则需要将其转换为日期时间: df = pd.to_datetime(df['date'], format="%d/%m/%Y %H:%M:%S %p") 现在我有了完整长格式的datetime对象。但是如果我只需要天/月/年怎么办 我当然可以将它们转换

再见

在我有限的时间内使用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")
看着这个我的眼睛很痛。。。应该有一个更简单的方法,对吗

熊猫或功能可以完成这项工作:

#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]

伤害你的眼睛并不意味着它不起作用或不有效/简单。如果您担心可读性,只需在代码中的其他地方执行
DATE\u FORMAT=“%d/%m/%Y”
,然后使用它,我只是觉得它看起来不合理地复杂,一点都不像python。但我想它现在就可以了。当你说它“看起来不像蟒蛇”时,你可以说“蟒蛇禅”中的一句话“显式比隐式好”。这有时会导致代码更加冗长,这很公平。我想你是对的。我只是想可能有一个更简单的方法,我只是不知道。