2017-06-08 1 views
1

日付が列のpandasデータフレームがあります。データフレームに前の日付インデックスの新しい列を追加します。これを達成する方法は? サンプルDF:pandasは前回のインデックスを取得します

index Date 
0 2015-10-03 
1 2015-11-03 
2 2015-11-30 
3 2015-11-30 
4 2015-12-03 

所望の出力:

index Date previous_day 
0 2015-10-03 0 
1 2015-11-03 0 
2 2015-11-30 1 
3 2015-11-30 1 
4 2015-12-03 3 
  1. インデックス1で、私は前日に1を望んで何の前日はありませんので。
  2. インデックス2の日付は、私は、インデックス3

ためprevious_dayに1を期待指数3と同じであるのでおかげで、

+0

日はインデックス3と同じでない場合にのみ動作します! – harshil9968

+0

@ harshil9968インデックス2の日付(2015-11-30)はインデックス3の日付と同じです(2015-11-30) – nilesh

答えて

1

私はあなたがしてNaNDate列のduplicated値のindexを交換し、必要があると思いますこれらの値を入力して転送します。

お知らせ:また1へのインデックスの必要改名最初の値と最後の減算1あるソリューションは、インデックス2でユニークな単調指数(0,1,2,...

#see notice above 
df.reset_index(drop = True, inplace = True) 

df['prev'] = df.rename(index={0:1}) 
       .index.to_series() 
       .where(~df['Date'].duplicated()).ffill() 
       .astype(int) 
       .sub(1).values 
print (df) 
      Date prev 
index     
0  2015-10-03  0 
1  2015-11-03  0 
2  2015-11-30  1 
3  2015-11-30  1 
4  2015-12-03  3 
+1

はい、うまくいきます。df.reset_index(drop = True)でユニークな単調インデックスを確認しています、inplace = True) ' – nilesh

+0

スーパー、とてもいいアイデアだった;) – jezrael

関連する問題