有没有办法使用 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')]})
我有 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')]})