我有一个由300 k记录组成的变量,日期如下所示
2015-02-21 12:08:51
从那一天起,我想删除时间
日期变量的类型为pandas.core.series.series
这是我试过的方法
from datetime import datetime,date
date_str = textdata['vfreceiveddate']
format_string = "%Y-%m-%d"
then = datetime.strftime(date_str,format_string)
一些随机错误
在上面的代码中,textdata是我的datasetname,vfreceived date是一个由日期组成的变量
我如何编写代码来从日期时间中删除时间。
4条答案
按热度按时间xjreopfe1#
假设所有的datetime字符串都是类似的格式,那么只需使用
to_datetime
将它们转换为datetime,然后调用dt.date
属性来获取日期部分:编辑
如果你只想改变显示而不是dtype,你可以调用
dt.normalize
:你可以看到dtype仍然是
datetime
:eqqqjvef2#
您正在调用
datetime.datetime.strftime
,它需要一个datetime.datetime
示例作为其第一个参数,因为它是一个未绑定方法;但是你传递给它的是一个字符串而不是一个datetime示例,这就是明显的错误。如果您想要的结果是字符串级别,那么您可以纯粹地在字符串级别工作;以你给予的数据为例,
date_str.split()[0]
就是你需要的2015-02-21
字符串。或者,你可以使用
datetime
,但是你需要先解析字符串,而不是格式化它--因此,strptime,* 不是 * strftime:如果你想要的是一个
datetime.date
对象(但是如果你想要的只是日期的字符串形式,这样的方法可能会“矫枉过正”:-)。ss2ws0br3#
简笔
date.strftime("%d-%m-%Y")
将删除Hour min & sec6fe3ivhb4#
Pandas不支持Pandas-native“date”类型。
这里的例子展示了
.dt.date
的使用,它将生成Python Date对象,并构造一系列指向这些日期的对象指针。现在,您已经增加了存储,并降低了对数据进行任何矢量化操作的可能性。此外,没有一个Pandas类型检查器会将该列识别为任何类型的日期(或日期时间)列,因为它现在只是一个Python对象列,没有Pandas。如果这是你想要的,那好吧。然而,我通常会选择 * 只 * 在序列化到另一种格式(csv,JSON等)之前这样做,这样它们就可以从没有时间组件输出中受益。
如果我真的想要一个DataFrame中的“日期”,我个人的选择是使用
.astype("datetime64[D]")
;这是一个快速的方法来零出时间组件-它仍然存在真的,但我现在可以做我的所有日期相关的计算不受时间组件。