2017-01-24 11 views
1

同じID内の連続する日時の値の差を計算しようとしています。ここで同じIDグループ内の連続するパンダの日時の値の差を計算する

は私のデータフレームとコードです:しかし、私は「0日」の連続日数が互いに同一であるとき取得

d = {'ID': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c'], 
'date': ['10/1/2010','10/1/2010','10/10/2010','10/10/2010','1/1/2001','3/1/2001','3/1/2001','6/1/2001','1/1/1990','3/1/1990','6/1/1990']} 

df = pd.DataFrame(d) 
df['date'] = pd.to_datetime(df['date']) 
df['Days'] = df.groupby('ID')['date'].diff().fillna('') 
df 

たとえば、ID「a」のメンバーである「2010-10-10」は2つあります。 「2010-10-10」の最初の行は「9日」の値を持ちますが、2番目の行は「0 days」を返します。私の目標は、両方とも「9日間」となるようにコードを書くことです。

答えて

1

あなたはナンと0を交換して、前方の塗りつぶしを行うことができます。

import numpy as np 
import pandas as pd 
df['Days'] = (df.groupby('ID', group_keys=False) 
       .apply(lambda g: g['date'].diff().replace(0, np.nan).ffill())) 
df 

enter image description here

+0

はあなたの援助のためにどうもありがとうございます! – comproch

関連する問題