在datetime.now()和一个充满日期的系列之间的Python年差异?

时间:2018-03-02 14:49:42

标签: python pandas datetime series date-difference

我想在我的数据集中创建一个新列,这是今天与数据集中已有的另一列之间的年份差异,充满了日期。

上面的代码:

df['diff_years'] = datetime.today() - df['some_date']
df['diff_years']

给我以下输出(例子):

1754 days 11:44:28.971615

我必须得到类似的东西(意思是上面几年的输出):

4,8 
(or 5)

我感谢任何帮助!

PS:我想避免循环播放这个系列,我相信它会给我一个理想的解决方案,但由于有一个很大的系列我想避免这种方式。

2 个答案:

答案 0 :(得分:2)

这是一种方式:

import pandas as pd, numpy as np

df = pd.DataFrame({'date': ['2009-06-15 00:00:00']})

df['years'] = (pd.to_datetime('now') - pd.to_datetime(df['date'])) / np.timedelta64(1, 'Y')

#                   date     years
# 0  2009-06-15 00:00:00  8.713745

答案 1 :(得分:1)

在某些日子之前,我在我的项目中面临同样的问题,现在我尝试过这些,

from dateutil.relativedelta import relativedelta
from datetime import date
now = date.today()
some_date = date(df['some_date'])

rdelta = relativedelta(now, some_date)
print('diff in years - ', rdelta.years)
print('remaining months - ', rdelta.months)
print('remaining days - ', rdelta.days)

它应该打印多年的差异