从python中的日期和时间变量中删除时间?

sur*_*dra 8 python pandas

我有一个变量组成的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)   
Run Code Online (Sandbox Code Playgroud)

一些随机错误

在上面的代码中,textdata是我的数据集名称,而vfreceived日期是由日期组成的变量
如何编写代码以从日期时间中删除时间.

EdC*_*ica 31

假设您的所有日期时间字符串都采用相似的格式,然后使用它们将它们转换为datetime 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
Run Code Online (Sandbox Code Playgroud)

编辑

如果您只想更改显示而不是dtype,则可以调用dt.normalize:

In[10]:
df['date'] = pd.to_datetime(df['date']).dt.normalize()
df

Out[10]: 
        date
0 2015-02-21
Run Code Online (Sandbox Code Playgroud)

你可以看到dtype仍然是datetime:

In[11]:
df.dtypes

Out[11]: 
date    datetime64[ns]
dtype: object
Run Code Online (Sandbox Code Playgroud)


Ale*_*lli 6

您正在调用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()
Run Code Online (Sandbox Code Playgroud)

如果它是datetime.date你想要的对象(但如果你想要的只是日期的字符串形式,这种方法可能是“矫枉过正”:-)。