各観測に固有の列がある場合 (「ObservationID」と呼びましょう)、これを行うのは非常に簡単です。またはのいずれかを使用できpandas.concat
ますpandas.merge
。私はconcat
それが少し簡単だと思うので、私は行きます。
import pandas as pd
sensor1 = pd.DataFrame({"p1":[5,2,3], "ObservationID":[22, 31, 14]})
sensor2 = pd.DataFrame({"p2":[1,1,0], "ObservationID":[22, 31, 14]})
# first, set index column to be unique
sensor1_indexed = sensor1.set_index(["ObservationID"])
sensor2_indexed = sensor2.set_index(["ObservationID"])
sensors = pd.concat([sensor1_indexed, sensor2_indexed], axis=1)
それらを同じ方法で注文できる場合ignore_index=True
は、連結を行うために追加できます。
sensors = pd.concat([sensor1, sensor2], axis=1, ignore_index=True)
最後に、これをpd.merge
で行うこともできますが、なぜそうする必要があるのか わかりません(両方の部分に同じ名前の列がない限り、マージを使用するか、勝つためにセンサーの1つを選択する必要があります) . そのためには、結合条件が必要です (そのため、このためにインデックスのないセンサーを使用しています)。
sensors = pd.merge(sensor1, sensor2, how="inner", on=["ObservationID"])
pd.concat
はオブジェクトのリストを取り、1 回の呼び出しで必要な数の要素を連結できることに注意してください。これは、複数のセンサーがある場合により便利になる可能性があります。