2016-05-09 13 views
0

通常、長さの異なる2組のデータがあり、その中にUNIXのタイムスタンプ列が含まれています。 1つの日付フレームは通常一定の間隔のデータを持ちますが、オフにはオフセットがありますが、それでも予測できない5秒ごと(0,5,10,15 vs 3,8,13,18)です。最も近いUNIXタイムスタンプに2つのDataFramesをマージする

   df1       df2 
0  1428796819  |  0  1428796800 
1  1428796824  |  1  1428796805 
2  1428796829  |  2  1428796810 
3  1428796834  |  3  1428796815 
4  1428796839  |  4  1428796820 
5  1428796844  |  5  1428796825 

私はこれらの2つのデータフレームを最も近い日付に基づいてマージしようとしています。私は一致していないdfの長さの結果として 'NaN'が存在することは問題ありません。 UNIXのタイムスタンプは 'int64'形式です。

いずれのアイデアも素晴らしいでしょう。あなたはこのようなあなたのタイムスタンプをリサンプリングしようとすることができます

+1

上記の例では、df1' 'で多くの値はdf2''で同じ値に最も近いです。たとえば、最初のものを除く 'df1'のすべての値は' df2'の最後の値に最も近い値になります。この状況で行をどのようにマージしたいですか?希望の結果は何ですか? – unutbu

答えて

0

data = """\ 
ts 
1428796819 
1428796824 
1428796829 
1428796834 
1428796839 
1428796844 
""" 
df1 = pd.read_csv(io.StringIO(data), parse_dates=['ts'], date_parser=lambda x: pd.to_datetime(x, unit='s')) 
df1['df1'] = range(len(df1)) 


data = """\ 
ts 
1428796800 
1428796805 
1428796810 
1428796815 
1428796820 
1428796825 
""" 
df2 = pd.read_csv(io.StringIO(data), parse_dates=['ts'], date_parser=lambda x: pd.to_datetime(x, unit='s')) 
df2['df2'] = range(len(df2)) 


(df1.set_index('ts') 
    .resample('5S') 
    .last() 
    .join(df2.set_index('ts') 
      .resample('5S') 
      .last(), 
      rsuffix='_r') 
) 

テスト:

In [88]: df1 
Out[88]: 
        ts df1 
0 2015-04-12 00:00:19 0 
1 2015-04-12 00:00:24 1 
2 2015-04-12 00:00:29 2 
3 2015-04-12 00:00:34 3 
4 2015-04-12 00:00:39 4 
5 2015-04-12 00:00:44 5 

In [89]: df2 
Out[89]: 
        ts df2 
0 2015-04-12 00:00:00 0 
1 2015-04-12 00:00:05 1 
2 2015-04-12 00:00:10 2 
3 2015-04-12 00:00:15 3 
4 2015-04-12 00:00:20 4 
5 2015-04-12 00:00:25 5 

In [90]: (df1.set_index('ts') 
    ....:  .resample('5S') 
    ....:  .last() 
    ....:  .join(df2.set_index('ts') 
    ....:    .resample('5S') 
    ....:    .last(), 
    ....:   rsuffix='_r') 
    ....:) 
Out[90]: 
        df1 df2 
ts 
2015-04-12 00:00:15 0 3.0 
2015-04-12 00:00:20 1 4.0 
2015-04-12 00:00:25 2 5.0 
2015-04-12 00:00:30 3 NaN 
2015-04-12 00:00:35 4 NaN 
2015-04-12 00:00:40 5 NaN 
+0

遅い応答のお詫び。これは私が一番やったことです、どうもありがとうございます。私は頻繁に試合が1つの行でオフになることに気づいている。したがって、HH:MM:04は.05の代わりにHH:MM:00と一致します。ここで起こっていることは何ですか?もう一度、私はこれまで私を得るために十分にあなたに感謝することはできません。 –

関連する問題