firstname,secondname,birthdate
vanco,grizov,3-16-1983
vlado,stojanov,6-24-1982
goce,grizov,7-18-1985
import pandas as pd
from datetime import date
data=pd.read_csv(r'C:\\Users\\User\\Desktop\\test\\vanco.csv')
data.head(3)
print(data)
data.birthdate=pd.to_datetime(data.birthdate)
data.head(3)
print (data)
def calculate_age(born):
today = date.today()
return today.year - born.year - ((today.month, today.day) < (born.month, born.day))
data['birthdate'].apply(lambda x: calculate_age(x))
print(data)
根据一段代码,我在PyCharm中有这个输出
我编写代码,然后将csv文件中的列birthdate转换为datetime对象:
然后我编写一个函数来创建并返回出生日期的年龄
def calculate_age(born):
today = date.today()
return today.year - born.year - ((today.month, today.day) < (born.month, born.day))
data['birthdate'].apply(lambda x: calculate_age(x))
print(data)
从代码中,我在PyCharm控制台中有这个输出
filename secondname birthdate
0 vanco grizov 3-16-1983
1 vlado stojanov 6-24-1982
2 goce grizov 7-18-1985
filename secondname birthdate
0 vanco grizov 1983-03-16
1 vlado stojanov 1982-06-24
2 goce grizov 1985-07-18
filename secondname birthdate
0 vanco grizov 1983-03-16
1 vlado stojanov 1982-06-24
2 goce grizov 1985-07-18
(今天-bd)
返回总天数的值。
pd. timedelta(天=365.25)
,得到年数。
365.25
因为一年的长度变化import pandas as pd
from datetime import date
# read the file in and covert the birthdate column to a datetime
df = pd.read_csv('vanco.csv', parse_dates=['birthdate'])
# function
def calc_age(bd: pd.Series) -> pd.Series:
today = pd.to_datetime(date.today()) # convert today to a pandas datetime
return (today - bd) / pd.Timedelta(days=365.25) # divide by days to get years
# call function and assign the values to a new column in the dataframe
df['age (years)'] = calc_age(df.birthdate)
# display(df)
firstname secondname birthdate age (years)
0 vanco grizov 1983-03-16 37.48118
1 vlado stojanov 1982-06-24 38.20671
2 goce grizov 1985-07-18 35.14031
dateutil
模块,该模块有更多功能丰富的方法选择
relativedelta
将补偿闰年。年份
从relativedelta
对象中仅提取年份组件
# updated function with relativedelta
def calc_age(bd: pd.Series):
today = pd.to_datetime(date.today())
return bd.apply(lambda x: relativedelta(today, x).years)
# function call
df['age (years)'] = calc_age(df.birthdate)
# display(df)
firstname secondname birthdate age (years)
0 vanco grizov 1983-03-16 37
1 vlado stojanov 1982-06-24 38
2 goce grizov 1985-07-18 35
# the output if .years is removed from the calc_age function
firstname secondname birthdate age (years)
0 vanco grizov 1983-03-16 relativedelta(years=+37, months=+5, days=+22)
1 vlado stojanov 1982-06-24 relativedelta(years=+38, months=+2, days=+14)
2 goce grizov 1985-07-18 relativedelta(years=+35, months=+1, days=+20)
我想知道如何用基本Python解决这个问题(不使用库):如何计算一个人生日后的10000天将是(或将是)什么时候。例如,考虑到2008年5月19日星期一,理想的日期是2035年10月5日星期五。(根据https://www.durrans.com/projects/calc/10000/index.html?dob=19/5/2008 到目前为止,我所做的是以下脚本 它估计了一个人从生日起1000
无法计算年、月、日两个日期之间的差异。问题是每个月有30天,每年有365天,没有例外。这里有很多话题,但我没有找到任何能解决我的问题或帮助我解决问题的。我发现的每一个主题都只是用普通的方法解决计算差分的问题,这很简单。我如何计算这种差异? 我使用的是Java 7(没有机会安装joda time)和groovy 2.4.0。 例子有: 谢谢
问题内容: 我想以Java方法的整数形式返回年龄(以年为单位)。我现在所拥有的是getBirthDate()返回Date对象(带有出生日期;的以下内容: 但是由于不赞成使用getYear(),所以我想知道是否有更好的方法可以做到这一点?我什至不确定这是否能正常工作,因为我还没有进行单元测试。 问题答案: JDK 8使这个变得轻松而优雅: 一个JUnit测试以证明其用法: 现在每个人都应该使用JDK
在Postgres数据库中给定此架构: 我如何查询表以获得每个人今天之后的下一个生日的日期? 例如,如果Bob的出生日期是2000-06-01,那么他的下一个生日将是2016-06-01。 注意:我不是在寻找一个预定义的,而是一个人出生的下一个周年纪念日。 我已经用Python写了等效的: 然而,我想看看博士后是否能以更有效的方式做到这一点。
我有两个约会: 来自数据库的查询集,其中包括日期字段(1992-11-15)和date.today() 以下是我的观点。py 这是我的django模板 我怎样才能减去它们得到确切的年龄?我只能做减法。 谢谢
问题内容: 对于以下计算: 结果是: 相当于31天+1天= 32天。 为此: 结果是: 这等于:31天(八月)+ 30天(九月)+1(十月)= 62天 包裹中是否有一种方法可以计算出天数?我找不到一个。不知道我是否忽略了任何内容,还是只是简单地不存在。 问题答案: 从文档中: 要使用基于日期的值(年,月,日)定义时间量,请使用该类。的类提供各种获取方法,例如,,和。要呈现在时间的单个单元,测量的时