python - 我如何获得 Pandas 的年龄和日期

标签 python pandas datetime python-dateutil relativedelta

这是我的数据

Customer_id    Date-of-birth
1              1992-07-02
2              1991-07-03

这是我的代码

import datetime as dt
df['now'] = dt.datetime.now()
df['age'] = df['now'].dt.date - df['Date-of-birth']

这是结果

Customer_id    Date-of-birth     age
1              1992-07-02        xxxx days
2              1991-07-03        xxxx days

我想要的结果是

Customer_id    Date-of-birth     age
1              1992-07-02        26 years 22 days
2              1991-07-03        27 years 21 days

现在告诉你,根据 df.dtypesDate-of-birth 是一个对象,因为它基于下拉列表中的客户输入

我怎样才能做到这一点?我希望问题足够清楚

最佳答案

使用 this solution有自定义函数,因为闰年​​所以算起来不容易:

from dateutil.relativedelta import relativedelta

def f(end):
    r = relativedelta(pd.to_datetime('now'), end) 
    return '{} years {} days'.format(r.years, r.days)

df['age'] = df["Date-of-birth"].apply(f)
print (df)
   Customer_id Date-of-birth               age
0            1    1992-07-02  26 years 22 days
1            2    1991-07-03  27 years 21 days

关于python - 我如何获得 Pandas 的年龄和日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51491893/

相关文章:

python - 用于在字符串中查找字母数字模式的正则表达式

python - 如何使用 apply 将列作为参数传递给类

python - 将 Numpy 数组转换为 Pandas DataFrame

php - 像sql一样将日期更改为时间戳

javascript - 如何转换 7 :30 AM time to javascript Date type?

python - 访问包含列表的 Pandas DataFrame 列的每个第一个元素

python - 平滑二维图形

python - 在 h5py 数据集中添加或删除特定行或列

python - Pandas:如何创建一个简单的计数器来增加每 n 行?

c# - 日期时间上下舍入