2016-11-16 42 views
0

有关于如何在熊猫中创建日计数类型的列的问题。给定一个日期列表,我希望能够计算从一个日期到前一个日期的差异。现在,我可以用简单的减法来做到这一点,它会返回我一个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.

我可以使用。天像这里面确实回报我是一个数字,但它不能处理整个列。

(df['INDEX_DATE'][1] - df['INDEX_DATE'][0]).days 

如果我尝试这样:

df['day_count'] = (df['INDEX_DATE'] - df['INDEX_DATE'].shift(1)).days 

我得到
AttributeError错误的错误: '系列' 对象有没有属性 '天'

我可以解决“1天“,但我认为必须有更好的方式来做到这一点。

+0

你想'DF [ 'DAY_COUNT'] =(DF [ 'INDEX_DATE'] - DF [ 'INDEX_DATE']转向(1)。)dt.days' – EdChum

+0

感谢。 ,这个和MaxU的解决方案是有效的! – WhitneyChia

回答

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