2 つの DataFrame を時間的に最も近い隣人によって正常にマージしました。私の現在の中間結果は次のようになります。
merge_key jd var2 index distance
2010-01-01 00:00:00 0 2455197.500000 0 2010-01-01 00:00:00 0
2010-01-01 00:06:00 0 2455197.500000 0 2010-01-01 00:00:00 -360
2010-01-01 00:12:00 0 2455197.500000 0 2010-01-01 00:00:00 -720
2010-01-01 00:18:00 1 2455197.517361 1 2010-01-01 00:25:00 420
2010-01-01 00:24:00 1 2455197.517361 1 2010-01-01 00:25:00 60
2010-01-01 00:30:00 1 2455197.517361 1 2010-01-01 00:25:00 -300
2010-01-01 00:36:00 1 2455197.517361 1 2010-01-01 00:25:00 -660
2010-01-01 00:42:00 2 2455197.534722 2 2010-01-01 00:50:00 480
2010-01-01 00:48:00 2 2455197.534722 2 2010-01-01 00:50:00 120
2010-01-01 00:54:00 2 2455197.534722 2 2010-01-01 00:50:00 -240
次のステップでは、重複したエントリを削除し、最小距離のエントリのみを選択したいと思います。私が思いついた:
df.groupby("merge_key").apply(lambda x: x.ix[np.abs(x['distance']).idxmin()])
ただし、これは次のことにつながります。
merge_key jd var2 index distance
merge_key
0 0 2455198 0 2010-01-01 00:00:00 0
1 1 2455198 1 2010-01-01 00:25:00 60
2 2 2455198 2 2010-01-01 00:50:00 120
「jd」のデータ型が整数に変更されたようですか?また、merge_key を新しいインデックスとして使用したくありません。
私の望ましい出力は実際には次のとおりです。
merge_key jd var2 index distance
2010-01-01 00:00:00 0 2455197.500000 0 2010-01-01 00:00:00 0
2010-01-01 00:24:00 1 2455197.517361 1 2010-01-01 00:25:00 60
2010-01-01 00:48:00 2 2455197.534722 2 2010-01-01 00:50:00 120