从第13列开始,我如何仅按年龄获取数据以进行操作并产生结果?
79年1月12日
与此同时,如何在以下情况下对数据进行相应的排序:
1. Children < 18
2. Youth 18-30
3. Adult 30-60
4. Senior > 60
答案 0 :(得分:0)
from datetime import datetime
# current time
now = datetime.now()
# date of birth
birth = datetime.strptime("12-Jan-79", "%d-%b-%y")
age = int((now - birth).days/365)
print("Person's age is: " + str(age))
您也许可以将出生字符串转换为datetime并获得一个timedelta到现在。
答案 1 :(得分:0)
首先,我的18至30岁的朋友被称为“青年”会感到惊讶。 :) 这样做可能会有一些更优雅的方法,但这只是一个粗略的轮廓。 (我尚未对此进行测试。因此希望对您有所帮助)
from dateutil.relativedelta import relativedelta
import datetime
import pandas as pd
now= datetime.datetime.now()
child_split = now - relativedelta(years=18)
youth_split = now - relativedelta(years=30)
adult_split = now - relativedelta(years=60)
senior = now - relativedelta(years=200)
bins = pd.IntervalIndex.from_tuples([
(datetime.datetime.now(), child_split),
(child_split, youth_split),
(youth_split, adult_split),
(adult_split, senior)
])
df['new_column'] = pd.cut(df['DateOfBirth'], bins,
labels=["child", "youth", "adult", "senior"])