我有一个以日期作为索引的dF,我想添加一个新列' delta'它显示索引中的日期与今天的日期之间的天数。
我有:
dF['today'] = '2015-01-30'
dF['today'] = pd.to_datetime(dF['today'])
dF['tvalue']= dF.index
dF['delta'] = (dF['tvalue'] - dF['today'])
显然,这不起作用。有什么反馈吗?
答案 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()