我有一个由300k记录组成的变量,日期和日期看起来像是
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是我的数据集名称,而vfreceived日期是由日期
组成的变量
如何编写代码以从日期时间中删除时间。
答案 0 :(得分:19)
假设您的所有日期时间字符串都采用相似的格式,然后使用to_datetime
将其转换为日期时间,然后调用dt.date
属性以获取日期部分:
In [37]:
df = pd.DataFrame({'date':['2015-02-21 12:08:51']})
df
Out[37]:
date
0 2015-02-21 12:08:51
In [39]:
df['date'] = pd.to_datetime(df['date']).dt.date
df
Out[39]:
date
0 2015-02-21
如果您只想更改显示而不是dtype,则可以拨打dt.normalize
:
In[10]:
df['date'] = pd.to_datetime(df['date']).dt.normalize()
df
Out[10]:
date
0 2015-02-21
您可以看到dtype保持为datetime
:
In[11]:
df.dtypes
Out[11]:
date datetime64[ns]
dtype: object
答案 1 :(得分:3)
您正在调用datetime.datetime.strftime
,这需要datetime.datetime
实例作为其第一个参数,因为它是未绑定的方法;但是你传递了一个字符串而不是一个日期时间实例,这是明显的错误。
如果这是您想要的结果,您可以纯粹在字符串级别工作;以您提供的数据为例,date_str.split()[0]
就是您似乎需要的2015-02-21
字符串。
或者,您可以使用datetime
,但是您需要首先解析字符串,而不是格式 - 因此,str p 时间,不 str f 时间:
dt = datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')
date = dt.date()
如果它是你想要的datetime.date
对象(但是如果你想要的只是日期的字符串形式,那么这种方法可能是"矫枉过正": - )。