2017-07-27 23 views
1

2つのデータセットを1つのデータセットにまとめる必要があります。タイムスタンプが異なる2つのパンダをマージする方法

私は2つの生成データフレームを持っています - パンダ、1秒ごとにデータサンプルを持つもの、もう1つは約120秒ごとにサンプリングしたデータです。

どのように私はこれらの2つをマージすることができます、アプリケーションの間隔によって支配されます。 120秒の生成タスク。

私は現在、速く生成された1秒のうち120番目のサンプルセットをすべて取り出しました。データセット。これらは正確ではなく、1秒であり、少しのジッタが含まれています。

     Time Torque [Nm] Speed [1/s] 
54240 2017-04-05 21:21:21  938.00  3000.0 
54252 2017-04-05 21:23:23  936.25  3000.0 
54264 2017-04-05 21:25:24  948.50  3000.0 
54276 2017-04-05 21:27:26  948.50  3000.0 
54288 2017-04-05 21:29:28  936.25  3000.0 
54300 2017-04-05 21:31:29  952.00  3000.0 
54312 2017-04-05 21:33:31  945.00  3000.0 
54324 2017-04-05 21:35:33  927.50  3000.0 

同様に、私は120秒intevals

    Time FFT ISO FFTe: FO 
0 2017-04-05 21:26:08 20.5754 16.377570 
1 2017-04-05 21:28:08 106.1549 32.836566 
2 2017-04-05 21:30:07 16.2735 19.308864 
3 2017-04-05 21:32:08 24.2232 42.766070 
4 2017-04-05 21:34:08 35.5723 64.152879 
5 2017-04-05 21:36:08 3.7364 29.323316 
6 2017-04-05 21:38:08 21.8207 17.796711 
7 2017-04-05 21:40:08 9.9334 49.642802 

で設定したデータがタイムスタンプが同一ではないが、ジッタのビットを含んでいてもよいです。

同じ120秒間隔でデータ(トルク[Nm]、スピード[1/s]、FFT ISO、FFTe:FO)が結合されています。

おそらく私は120秒の「基準間隔」を定義し、これらの同じサイズのスロットにデータを収める必要があります。

Aは、それがpd.concatまたはpd.appendを使用して行うことができますが、私はかなりの平均を取ることによって、周波数120Sを持っているの両方にインデックスを正規化するresample/meanメソッドを使用して、すべてのヘルプが

+1

あなたは[この1](https://stackoverflow.com/questions/34880539のような任意の質問を見てきました/ pandas-merging-based-at-a-timestamp-do-not-match-exactly)? – cmaher

答えて

4

を高く評価しているか

考え出していないと仮定します各120秒間のすべての値の例えば

resampled1 = df1.resample('120S').mean() 
resampled2 = df2.resample('120S').mean() 
result = resampled1.join(resampled2) 

import numpy as np 
import pandas as pd 
np.random.seed(2017) 

def make_index(N, freq): 
    index = pd.date_range('2000-1-1', periods=N, freq=freq).view('i8') 
    index = (np.sort(index + np.random.uniform(0, np.diff(index).mean(), size=N).astype(int)) 
      .view('datetime64[ns]')) 
    return index 

N = 100 
sec_index = make_index(120*N, 'S') 
sec120_index = make_index(N, '120S') 

df1 = pd.DataFrame({'Torque': np.random.random(120*N), 
        'Speed': np.random.random(120*N), 
        'Time': sec_index}) 

df2 = pd.DataFrame({'FFT ISO': np.random.random(N), 
        'FFTe: FO': np.random.random(N), 
        'Time': sec120_index}) 

df1 = df1.set_index('Time') 
df2 = df2.set_index('Time') 

resampled1 = df1.resample('120S').mean() 
resampled2 = df2.resample('120S').mean() 
result = resampled1.join(resampled2) 
print(result.head()) 

利回り

     Speed Torque FFT ISO FFTe: FO 
Time              
2000-01-01 00:00:00 0.482262 0.470523 0.435150 0.289036 
2000-01-01 00:02:00 0.501221 0.476776 0.005576 0.284386 
2000-01-01 00:04:00 0.491305 0.459710 0.249217 0.253787 
2000-01-01 00:06:00 0.486900 0.498921 0.391429 0.854698 
2000-01-01 00:08:00 0.485611 0.517818 0.071058 0.552727 
+0

その迅速で正確な応答に感謝します;-) – opprud

関連する問題