2016-11-16 11 views
0

パンダの日数タイプの列を作成する方法について質問があります。日付のリストが与えられた場合、ある日付から前の日付までの差を計算することができます。さて、私は単純な減算でこれを行うことができ、それは私が思うtimedeltaオブジェクトを返します。整数の日数がほしい場合はどうすればいいですか? .daysを使用すると、2つの日付で動作するように見えますが、その列を使用することはできません。パンダデータフレームの時間差分

私は、私はリターンをしている。このようday以下使用することができます。1.

をしたい....私は「1日の取得

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

、のは、私は言ってみましょう私には数字が書かれていますが、列全体を扱うことはできません。私はこのような何かしようとした場合

(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