返回pandas DF列,其中包含索引与今天日期之间经过的天数

时间:2015-01-31 05:09:37

标签: python pandas

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

我有:

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

显然,这不起作用。有什么反馈吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

您可以使用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])

显然可以作为另一栏添加。


最后,可以通过

自动获取今天的日期
today = pd.datetime.today()