AttributeError:'TimedeltaProperties'对象在Pandas

时间:2015-06-20 04:16:21

标签: python datetime pandas

在Pandas中,为什么TimedeltaProperties对象没有属性'years'?

毕竟,datetime对象具有此属性。

对于一个关注时间的物体而言,这似乎是一件非常自然的事情。特别是如果它已经有一个小时,秒等属性。

是否有一个解决方法,以便我的列充满了像
这样的值 10060 days
可以转换成年?或者更好的是,刚刚转换为整数表示多年?

3 个答案:

答案 0 :(得分:4)

TimedeltaProperties没有yearmonth属性,因为根据TimedeltaProperties source code。它是 -

  

Series系列的datetimelike属性的Accessor对象。

但是,monthsyears没有固定的定义。

根据{{​​1}}本身,

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