这个问题不同于堆栈溢出中所有可用的问题和答案,因为我不想将数据类型更改为字符串以获得所需的输出。
我觉得这是最令人困惑的,无法找到解决我的问题的正确方法。我读了一个具有以下内容的Excel文件-
Date
9/20/2017 7:27:30 PM
9/20/2017 7:27:30 PM
11/21/2018 8:28:30 AM
7/18/2019 9:30:08 PM
.
.
.
我正在借助数据框从Excel工作表中获取此数据
df = pd.read_excel("data.xlsx")
首先,我想从此列中删除时间。我这样做是-
df['Date'] = pd.to_datetime(df['Date'])
df['Date'] = pd.to_datetime(df['Date'], errors='ignore', format='%d/%b/%Y').dt.date
它产生以下输出和数据类型为datetime.date
Date
20/9/2017
20/9/2017
21/11/2018
18/7/2019
.
.
.
但我希望将其作为以下类型而不将其更改为字符串。因为我想将此数据存储到另一个excel文件中,并且如果我们在excel工作表中应用过滤,则此列必须表现为日期列。
Date
20/Sep/2017
20/Sep/2017
21/Nov/2018
18/Jul/2019
.
.
.
我可以通过产生以上输出
df['Date'] = df['Date'].apply(lambda x: x.strftime('%d/%b/%Y'))
但是再次将这个日期列更改为字符串。但是我不希望它作为字符串。我希望它作为datetime类型,但不包括每个单元格中的时间值。将其从字符串转换为日期时间后,可能的解决方案如下,但它将再次在其中添加时间值-
df['Date'] = pd.to_datetime(df['Date'])
执行上述两个步骤后,还将包括时间12:00:00 AM或00:00:00 AM以及日期值。
希望我清楚。如何获得以最终列值作为日期类型的期望结果
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。