在Pandas中,为什么TimedeltaProperties
对象没有属性'years'?
毕竟,datetime
对象具有此属性。
对于一个关注时间的物体而言,这似乎是一件非常自然的事情。特别是如果它已经有一个小时,秒等属性。
是否有一个解决方法,以便我的列充满了像
这样的值
10060 days
,
可以转换成年?或者更好的是,刚刚转换为整数表示多年?
答案 0 :(得分:4)
TimedeltaProperties
没有year
或month
属性,因为根据TimedeltaProperties source code。它是 -
Series系列的datetimelike属性的Accessor对象。
但是,months
或years
没有固定的定义。
1 month
可以采用不同的天数,例如1月 - > 4月31日 - > 30天等等。
month
可以根据年份(在2月份的情况下),如果年份是2004年,2月份有29天,如果年份是2003年2月有28天等,则可以采用不同的值。
与1 month
的情况相同,它可以根据具体年份采用不同的值,例如 - 如果年份为2003年,则为365天,如果年份为2004年则为366天天。
因此,像years
转换为10060 days
这样的要求不准确,years
?
如前所述,准确的年数没有。天数相当于取决于那些日子所代表的实际年份。
答案 1 :(得分:1)
此替代方法可以使您更紧密。
round((df["Accident Date"] - df["Iw Date Of Birth"]).dt.days / 365, 1)
答案 2 :(得分:0)
我使用 .astype('timedelta64 [Y]'),然后使用 .astype('int')获得整数年份:
df['age'] = (pd.Timestamp('now') - df.birthDate).astype('timedelta64[Y]').astype('int')
输出:
nflId height weight birthDate collegeName position displayName age
0 2539334 72 190 1990-09-10 Washington CB Desmond Trufant 30
1 2539653 70 186 1988-11-01 Southeastern Louisiana CB Robert Alford 31
2 2543850 69 186 1991-12-18 Purdue SS Ricardo Allen 28
3 2555162 73 227 1994-11-04 Louisiana State MLB Deion Jones 25
4 2555255 75 232 1993-07-01 Minnesota OLB DeVondre Campbell 27