0

パンダ データ フレームの列にデータを追加する方法がわかりません。

4 つのスレッドでサンプリングしている 4 つのセンサーがあります。各センサーで現在の値をパンダ データ フレームの特定の列に追加したいと考えています。

例えば:

ヘッダーのみの .csv ファイルがあります。

p1,p2,p3,c

スレッドが列に値を追加するようにします。したがって、最初のセンサーでの最初のサンプルの後、データ フレームは次のようになります。

p1 p2  p3  c
3  NaN NaN NaN

次のセンサーは、このような値を追加する必要があります

p1 p2  p3  c
3  5   NaN NaN

追加を検索しましたが、コードがどうあるべきかわかりません。

4

1 に答える 1

1

各観測に固有の列がある場合 (「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 回の呼び出しで必要な数の要素を連結できることに注意してください。これは、複数のセンサーがある場合により便利になる可能性があります。

于 2013-05-24T19:06:44.267 に答える