有关于如何在pandas中创建日计数类型列的问题。给定日期列表,我希望能够计算从一个日期到上一个日期的差异。现在,我可以通过简单的减法来做到这一点,它会给我一个timedelta对象,我想。如果我只想要整数天,该怎么办?使用.days似乎可以使用两个日期,但我无法使用列。
我们这样说,
df['day_count'] = (df['INDEX_DATE'] - df['INDEX_DATE'].shift(1))
INDEX_DATE day_count
0 2009-10-06 NaT
1 2009-10-07 1 days
2 2009-10-08 1 days
3 2009-10-09 1 days
4 2009-10-12 3 days
5 2009-10-13 1 days
我得到了1天' ....我只想要1。
我可以像这样使用.day,它会返回一个数字,但它不会处理整个列。
(df['INDEX_DATE'][1] - df['INDEX_DATE'][0]).days
如果我尝试这样的话:
df['day_count'] = (df['INDEX_DATE'] - df['INDEX_DATE'].shift(1)).days
我收到了一个错误 AttributeError:'系列'对象没有属性'天'
我可以在一天内工作''但我认为必须有更好的方法来做到这一点。
答案 0 :(得分:2)
试试这个:
In [197]: df['day_count'] = df.INDEX_DATE.diff().dt.days
In [198]: df
Out[198]:
INDEX_DATE day_count
0 2009-10-06 NaN
1 2009-10-07 1.0
2 2009-10-08 1.0
3 2009-10-09 1.0
4 2009-10-12 3.0
5 2009-10-13 1.0