有没有办法使用 pandas 将天数转换为年数?

Is there a way to convert days to years using pandas?

我有 2 列名为“deleted_at”(客户取消服务的日期)和“birth_date”(客户的)。我已经使用 pd.to_datetime 将字符串转换为日期类型。示例:

mydataframe.loc[:,'deleted_at'] = pd.to_datetime(mydataframe['deleted_at']).

我正在尝试使用以下方法计算客户的年龄:

mydataframe [age] = (mydataframe['deleted_at'] - mydataframe['birth_date'])/365.25

问题是此代码 return 以天为单位计算日期,而我想收到以年为单位的日期。示例:

[deleted_at] 2018-06-17 23:59:08 - [birth_date] 1966-01-25

正在 returning: 52 天 09:27:43.101984942。应该return52年x月y日,甚至只是52年。有简单的方法吗?

这个解决方案要简单得多:

mydataframe[age] = (mydataframe['deleted_at'].dt.year - mydataframe['birth_date'].dt.year)

你可以调用日、周、月、年

您可以使用 relativedelta from dateutil 软件包(已安装 pandas)

from dateutil.relativedelta import relativedelta

cols = ['deleted_at', 'birth_date']
df['relativedelta'] = df[cols].apply(lambda x: relativedelta(x[0], x[1]), axis=1)

输出:

deleted_at birth_date relativedelta
2018-06-17 23:59:08 1966-01-25 00:00:00 relativedelta(years=+52, months=+4, days=+23, hours=+23, minutes=+59, seconds=+8)

设置:

import pandas as pd

df = pd.DataFrame({'deleted_at': [pd.Timestamp('2018-06-17 23:59:08')],
                   'birth_date': [pd.Timestamp('1966-01-25')]})