【问题标题】:removing time from date&time variable in pandas?从熊猫的日期时间变量中删除时间?
【发布时间】:2021-10-11 21:26:50
【问题描述】:

我有一个包含 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 日期是一个由日期组成的变量
我如何编写代码以从日期时间中删除时间。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    假设您所有的日期时间字符串都采用类似的格式,然后使用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
    

    【讨论】:

      【解决方案2】:

      您正在调用datetime.datetime.strftime,它的第一个参数需要datetime.datetime 实例,因为它是一个未绑定方法;但是你传递给它的是一个字符串而不是一个日期时间实例,这是明显的错误。

      如果这是您想要的结果,您可以纯粹在字符串级别工作;以您提供的数据为例,date_str.split()[0] 就是您似乎需要的 2015-02-21 字符串。

      或者,您可以使用datetime,但是您需要先解析字符串,而不是格式化它——因此, strp时间,不是 strf时间:

      dt = datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')
      date = dt.date()
      

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

      【讨论】:

        【解决方案3】:

        简单的写 pd.to_datetime('date') 将删除小时分钟和秒

        【讨论】:

          猜你喜欢
          • 2023-01-12
          • 2017-02-09
          • 2020-07-06
          • 2018-02-02
          • 1970-01-01
          • 2021-03-19
          • 2019-12-18
          • 2017-04-23
          相关资源
          最近更新 更多