【问题标题】:Cannot remove timestamp in datetime无法删除日期时间中的时间戳
【发布时间】:2020-07-19 15:31:18
【问题描述】:

我有dtype: object 的日期列,格式为31-Mar-20。所以我试图用datetime.strptime 把它变成datetime64[D] 格式为2020-03-31 不知何故无论我尝试过它都行不通,我尝试了this 和@ 的一些方法987654322@。在某种程度上,它确实把我的专栏变成了datetime64,但它里面有时间戳,我不想要它。我需要它是 datetime 没有时间戳,格式2020-03-31 这是我的代码

dates =  [datetime.datetime.strptime(ts,'%d-%b-%y').strftime('%Y-%m-%d') 
          for ts in df['date']]
df['date']= pd.DataFrame({'date': dates})
df = df.sort_values(by=['date'])

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    这种方法可能有效 -

    import pandas as pd
    df = pd.DataFrame({'dates': ['20-Mar-2020', '21-Mar-2020', '22-Mar-2020']})
    df
         dates
    0  20-Mar-2020
    1  21-Mar-2020
    2  22-Mar-2020
    
    df['dates'] = pd.to_datetime(df['dates'], format='%d-%b-%Y').dt.date
    df
        dates
    0  2020-03-20
    1  2020-03-21
    2  2020-03-22
    

    【讨论】:

      【解决方案2】:
      df['date'] = pd.to_datetime(df['date'], format="%d-%b-%y") 
      

      这会将其转换为日期时间,当您查看df 时,它会根据需要将值显示为2020-03-31,但是这些都是日期时间对象,因此如果您使用df['date'][0] 提取一个值,那么您会看到Timestamp('2020-03-31 00:00:00')

      如果你想把它们转换成日期,你可以这样做

      df['date'] = [df_datetime.date() for df_datetime in df['date'] ]
      

      执行此步骤可能有更好的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-18
        • 2018-02-02
        • 1970-01-01
        • 2020-01-06
        • 1970-01-01
        • 2011-10-01
        • 2012-05-22
        • 1970-01-01
        相关资源
        最近更新 更多