2017-07-20 5 views
0

私は、タイムスタンプ列と2つのデータ列(data1data2)を含むデータフレームを持っています。異なる周波数の2つのデータ列のリサンプリングまたは再インデックス

data1の列は、タイムスタンプ全体にまたがっており、data2列は約半分で停止しています。私のデータを収集していたときに、data1data2の両方が、異なる頻度を除いて、同じ時間のデータを収集しました。

data2の列には、resampleまたはreindexの機能に傾けておく必要があることを理解しておきたいと思いますが、これを行う方法がわかりません。私のタイムスタンプ列はオブジェクトで、私の2つのデータ列はfloat64の型です。

この目標を達成する最も簡単な方法は何ですか?

は、私は、次の質問を参照することを試みたが、私はそれを実装するトラブルを抱えていた。 PANDAS - Loop over two datetime indexes with different sizes to compare days and values

enter image description here

+1

あなたの問題を視覚化する潜在的な回答者のために、データフレームのサンプルと望ましい出力を投稿してください。 – ysearka

+0

時間は高周波データに対応していますか?そして、あなたの低頻度のデータは、現在、正しいタイムスタンプと関連付けられていませんか? (0以外は) – GeoMatt22

+0

@ GeoMatt22正しい - 私の 'data1'は私の' .csv'のTimeStampに対応していますが、 'data2'はありません。私は 'data2'を' data1'の長さに渡りたいと思います。 – Gary

答えて

1

は、ここで私はあなたがやろうとしていると思うものです。私の仮定はあなたのタイムスタンプがいくつかの乗数で整列されているということです。私の例では2分ごとに使用していますが、それはあなたの例が現れているからです。

df 
         a  b 
DATE 
2017-05-29 06:30:00 0.0 0.0 
2017-05-29 06:31:00 9.0 24.0 
2017-05-29 06:32:00 10.0 1.0 
2017-05-29 06:33:00 10.0 1.0 
2017-05-29 06:34:00 0.0 7.0 
2017-05-29 06:35:00 3.0 3.0 
2017-05-29 06:36:00 0.0 4.0 
2017-05-29 06:37:00 0.0 1.0 
2017-05-29 06:38:00 0.0 0.0 
2017-05-29 06:39:00 0.0 2.0 
2017-05-29 06:40:00 0.0 NaN 
2017-05-29 06:41:00 0.0 NaN 
2017-05-29 06:42:00 0.0 NaN 
2017-05-29 06:43:00 0.0 NaN 
2017-05-29 06:44:00 0.0 NaN 
2017-05-29 06:45:00 2.0 NaN 
2017-05-29 06:46:00 4.0 NaN 
2017-05-29 06:47:00 0.0 NaN 
2017-05-29 06:48:00 4.0 NaN 
2017-05-29 06:49:00 8.0 NaN 

は、それ自身のデータフレームにずれ列を抽出し、カウンター列を追加し、インデックスにはtimedeltaを追加し、古いインデックスを交換し、データの列を連結:ここに私のサンプルデータフレームです。

b = df['b'][:10].to_frame() 
b.insert(0, 'counter', range(len(b))) 
b.index = b.index.to_series().apply(lambda x: x + pd.Timedelta(minutes=b.loc[x].counter)) 
pd.concat([df['a'], b['b']], axis=1) 
         a  b 
DATE 
2017-05-29 06:30:00 0.0 0.0 
2017-05-29 06:31:00 9.0 NaN 
2017-05-29 06:32:00 10.0 24.0 
2017-05-29 06:33:00 10.0 NaN 
2017-05-29 06:34:00 0.0 1.0 
2017-05-29 06:35:00 3.0 NaN 
2017-05-29 06:36:00 0.0 1.0 
2017-05-29 06:37:00 0.0 NaN 
2017-05-29 06:38:00 0.0 7.0 
2017-05-29 06:39:00 0.0 NaN 
2017-05-29 06:40:00 0.0 3.0 
2017-05-29 06:41:00 0.0 NaN 
2017-05-29 06:42:00 0.0 4.0 
2017-05-29 06:43:00 0.0 NaN 
2017-05-29 06:44:00 0.0 1.0 
2017-05-29 06:45:00 2.0 NaN 
2017-05-29 06:46:00 4.0 0.0 
2017-05-29 06:47:00 0.0 NaN 
2017-05-29 06:48:00 4.0 2.0 
2017-05-29 06:49:00 8.0 NaN 

おそらく言うことはありませんが、各列に正しいタイムスタンプを適用する方がよいでしょう。

関連する問題