2017-06-15 15 views
0

私は巨大な時系列データセットを処理するためにPandasを使用しています。私は2つの連続したインデックス間の差は5条件に基づいてPandas Dataframeに行を挿入してください

実際よりも大きい場合にはデータフレームの行の間の行を追加したい:

期待
  a result 
Date     
1497544649 1  1.0 
1497544652 9  1.0 
1497544661 9  NaN 

  a result 
Date     
1497544649 1  1.0 
1497544652 9  1.0 
1497544657 9  0 
1497544661 9  NaN 

Iは差分を用います( )インデックスで2つの連続するインデックスの間に差異があるが、その差が5より大きい場合にレコードを挿入する方法がわからない。

これを実現する方法について

任意のポインタは

あなたは頭のスタートを持っているあなたに

答えて

0

ありがとういただければ幸いです。 diffカラムを追加すると、簡単にフィルタリングできます。

ルールに一致するデータフレームのインデックスを取得し、その行を挿入します。

df['diff'] = df.index.to_series().diff().fillna(0).to_frame("diff") 

matches = df[df['diff'] > 5].index.tolist() 


for i in matches: 
    diff = df.loc[i]['diff'] 
    interval = round(diff/2) # index some place in the middle 
    df.loc[i-interval] = [0, 0, 0, diff-interval] # insert row before matched index 
    df.loc[i]['diff'] = interval # may not need to update the interval 

df.sort_index(inplace=False) # pandas appends by default so we should sort this 

del df.diff # we can remove this 
関連する問題