【问题标题】:return pandas DF column with the number of days elapsed between index and today's date返回具有索引和今天日期之间经过的天数的 pandas DF 列
【发布时间】:2015-03-30 16:00:22
【问题描述】:

我有一个将日期作为索引的 dF,我想添加一个新列 'delta' 来显示索引中的日期和今天的日期之间的天数。

我有:

dF['today'] = '2015-01-30'
dF['today'] = pd.to_datetime(dF['today'])
dF['tvalue']= dF.index
dF['delta'] = (dF['tvalue'] - dF['today'])

显然,这是行不通的。有什么反馈吗?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以使用 pandas 方法立即解决问题。

    考虑例如

    df = pd.DataFrame({'A' : [1,2,3]}
          , index = [pd.to_datetime(['2015-01-30', '2015-01-29','2015-01-25'])] )
    

    那是

                     A
         2015-01-30  1
         2015-01-29  2
         2015-01-25  3
    

    然后你定义

    today = pd.to_datetime('2015-01-30')
    

    这样你才能最终计算出来

    (df.index - today).days
    
     array([ 0, -1, -5])
    

    这显然可以作为另一列添加。


    终于可以通过do自动获取今天的日期

    today = pd.datetime.today()
    

    【讨论】:

    • .days 对我不起作用,而 .astype('timedelta64[D]') 起作用。
    【解决方案2】:
    import time
    import datetime
    
    def ymd2epoch(y, m, d):
        t = datetime.datetime(y, m, d, 0, 0, 0).timetuple()
        return int(time.mktime(t))
    
    def yyyymmdd2epoch(s):
        ymd = map(int, s.split('-'))
        return ymd2epoch(ymd[0], ymd[1], ymd[2])
    
    def ymd_todaydiff(ymd):
        seconds_diff = int(time.time()) - yyyymmdd2epoch(ymd)
        daydiff = seconds_diff / (24*60*60)
        return daydiff
    
    if __name__ == '__main__':
        import sys
    
        for ymd in sys.argv[1:]:
            sys.stdout.write("DayDiff(%s) = %d\n" % 
                             (ymd, ymd_todaydiff(ymd)))
        sys.exit(0)
    

    运行它:

    $ ./daydiff.py 2015-01-01 2015-01-29 2015-01-30 2014-01-30
    DayDiff(2015-01-01) = 30
    DayDiff(2015-01-29) = 2
    DayDiff(2015-01-30) = 1
    DayDiff(2014-01-30) = 366
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 2022-08-20
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多