2016-06-23 7 views
0

私は不規則な時系列を表す2つのデータフレームを持っています。ここ重複しているが同一ではない期間インデックスを持つ2つのデータフレームからデータフレームを作成する

はDF1からのサンプルである:

index 
2014-10-30 16:00 118 
2014-10-30 19:00 160 
2014-10-30 22:00 88 
2014-10-31 00:00 128 
2014-10-31 03:00 89 
2014-10-31 11:00 66 
2014-10-31 17:00 84 
2014-10-31 20:00 104 
2014-10-31 21:00 82 
2014-10-31 23:00 95 
2014-11-01 02:00 44 
2014-11-01 03:00 54 
2014-11-01 14:00 83 
2014-11-02 03:00 78 
2014-11-02 04:00 87 
2014-11-02 13:00 90 

そしてここでは、DF2からのサンプルである:

index 
2016-02-04 02:00 0.00 
2016-02-06 00:00 50.00 
2016-02-07 05:00 30.00 
2016-02-07 21:00 26.00 
2016-02-10 18:00 100.00 
2016-02-11 00:00 20.00 
2016-02-12 03:00 15.00 
2016-02-12 18:00 90.00 
2016-02-13 17:00 25.00 
2016-02-13 19:00 40.00 
2016-02-15 00:00 35.00 
2016-02-18 04:00 14.00 
2016-02-28 00:00 33.98 

インデックスが毎時周波数とパンダ期間オブジェクトを、で表される時間の範囲であります2つのデータフレームのインデックスは確実にいくらか重複する。どのようにそれらのインデックスのユニオンによってインデックス付けされた単一のデータフレームにそれらをマージし、特定のインデックスの値が1つの列にない場合に空白(後でffillを適用することができます)を残しますか?

ここに私が試したものです:

0 
0 118.00 
1 160.00 
2 88.00 
3 128.00 
4 89.00 
5 66.00 
6 84.00 
7 104.00 
8 82.00 
9 95.00 

私も試してみました:

df1.merge(df2, how = 'outer', left_on = 'index', right_on = 'index') 

これは与えた

df1.merge(df2, how = 'outer') 

これは私のインデックスを失う無意味な結果のように思えた何を与えました私はKeyError

が、これは d2列が元 df_2ポストリサンプリングが正常に見えるにもかかわらず、全く NaNである出力を生成します。
pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:3979)() 

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:3843)() 

pandas/hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12265)() 

pandas/hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12216)() 

KeyError: 'index' 

は最後に、私はresampling後に各データフレームを辞書で新しいデータフレームを作成してみました。

どのようにしてこのマージを行うことができますか?代わりにmerge

+0

をドロップappendを使用*として説明してくださいそれらの指数*の和集合はあまりにも明瞭ではないが、2つのdfsから、望ましい出力がどのようになるかが示される。 – Parfait

答えて

0

、それはインデックスを保持しますように、この場合にはjoinを試してみてください:それはこの場合には、他の構成は必要ありません

df1.join(df2, how='outer')

outerと結合すると、インデックスのその時点で列に値がない場合でも、値はNaNのままです。

0

他の二つのオプション:

1)merge

df = df1.merge(df2, left_index=True, right_index=True, how='outer') 

2を使用)2つのDFSはまったく同じ列を持っているので、その後の重複行

df = df1.append(df2).drop_duplicates() 
関連する問題