Nab*_*zir 4 python datetime pandas python-dateutil relativedelta
这是我的数据
Customer_id Date-of-birth
1 1992-07-02
2 1991-07-03
Run Code Online (Sandbox Code Playgroud)
这是我的代码
import datetime as dt
df['now'] = dt.datetime.now()
df['age'] = df['now'].dt.date - df['Date-of-birth']
Run Code Online (Sandbox Code Playgroud)
这是结果
Customer_id Date-of-birth age
1 1992-07-02 xxxx days
2 1991-07-03 xxxx days
Run Code Online (Sandbox Code Playgroud)
我想要的结果是
Customer_id Date-of-birth age
1 1992-07-02 26 years 22 days
2 1991-07-03 27 years 21 days
Run Code Online (Sandbox Code Playgroud)
只是让你现在,通过df.dtypes,Date-of-birth是一个对象,因为是基于下拉客户输入
我怎样才能做到这一点?我希望这个问题足够清楚
使用该解决方案使用自定义功能,因为它算不容易,因为飞跃年:
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
Run Code Online (Sandbox Code Playgroud)
小智 5
输入:
import pandas as pd
import datetime as dt
now = dt.datetime.now()
for i in range(0, len(df)):
diff = now - dt.datetime.strptime(df['Date-of-Birth'][i], '%Y-%m-%d')
years = diff.days // 365
days = diff.days - (years*365)
df['age'][i] = str(years) + ' years ' + str(days) + ' days'
print(df)
Run Code Online (Sandbox Code Playgroud)
输出:
Customer_id Date-of-Birth age
1 1992-07-04 26 years 25 days
2 1991-07-04 27 years 26 days
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2108 次 |
| 最近记录: |