【问题标题】:Previous month datetime pandas上个月的日期时间熊猫
【发布时间】:2017-08-22 18:48:12
【问题描述】:

我有一个 datetime 实例声明如下:

dtDate = datetime.datetime(2016,1,1,0,0)

如何从dtDate 获取上个月和上一年?

例如类似:

dtDate.minusOneMonth()
# to return datetime.datetime(2015,12,1,0,0)

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    你可以使用:

    dtDate = datetime.datetime(2016,1,1,0,0)
    
    print (dtDate - pd.DateOffset(months=1))
    2015-12-01 00:00:00
    
    print (dtDate - pd.DateOffset(years=1))
    2015-01-01 00:00:00
    

    添加s 很重要,因为如果只使用year

    print (dtDate - pd.DateOffset(year=1))
    0001-01-01 00:00:00 
    

    【讨论】:

      【解决方案2】:

      你可以使用DateOffset:

      In [32]:    
      dtDate = dt.datetime(2016,1,1,0,0)
      dtDate - pd.DateOffset(months=1)
      
      Out[32]:
      Timestamp('2015-12-01 00:00:00')
      

      【讨论】:

        【解决方案3】:

        操纵整个熊猫系列。

        pd.DateOffset().dt.to_period("M") 一起使用

        df['year_month'] = df['timestamp'].dt.to_period("M")
        df['prev_year_month'] = (df['timestamp'] - pd.DateOffset(months=1)).dt.to_period("M")
        

        如果你想前进一个月,请设置months=-1

        【讨论】:

          【解决方案4】:

          使用来自dateutilrelativedelta

          import datetime
          import dateutil.relativedelta
          dtDate = datetime.datetime(2016,1,1,0,0)
          # get previous month
          print ((dtDate+dateutil.relativedelta.relativedelta(months=-1)).month)
          # get previous year
          print ((dtDate+dateutil.relativedelta.relativedelta(years=-1)).year)
          

          输出:

          12
          2015
          

          【讨论】:

            猜你喜欢
            • 2021-12-06
            • 2023-03-20
            • 2015-08-24
            • 2018-04-21
            • 2017-12-12
            • 2016-07-05
            • 2019-07-19
            • 2022-10-12
            • 2017-02-23
            相关资源
            最近更新 更多