1

バッチで毎日のシミュレーションを実行しています。1 年間の結果を得るために 365 回のシミュレーションを実行しています。毎回実行した後、結果からいくつかの配列を抽出し、後で分析するためにそれらを pandas.DataFrame に追加したいと考えています。

大まかなモデル (最適化を行う) と、シミュレーション後のより正確なモデルがあるため、2 つのソースから同じ変数を取得できます。事後シミュレーションが行われた場合、その結果が最適化結果を上書きする可能性があります。
さらに複雑にするために、離散化設定に応じて、最適化モデルの出力間隔は短くなりますが、最終的な分析はシミュレーション後のより大きな間隔で行われます)。

この DataFrame を構築する最良の方法は何ですか?

これが私の最初のアプローチでした:

  1. シミュレーション後の間隔が大きい (=15 分) インデックスを使用して、DataFrame df年間の空欄を作成します。DateRange
  2. 最適化を 1 日間行う ==>より短い間隔df_tempでas index を使用して一時的に作成するDateRange
  3. ここで説明されているように、これDataFrameを 15 分にダウンサンプリングします。
  4. で更新dfdf_tempます(df前回の実行の最後の行を除いて、行はまだ空であるため、取得する必要がありますdf_temp[1:]
  5. 同日のシミュレーションを実行 ==>df_temp2間隔 = 15 分で一時的に作成
  6. で対応する行を上書きしdfますdf_temp2

ステップ 4) と 6) ではどの方法を使用すればよいですか? または、最初からより良い方法はありますか?ありがとう、ロエル

4

1 に答える 1

1

を使用するのもよい方法だと思いますDataFrame.combine_firstが、データの規模によっては、既存の DataFrame の特定の行を変更しただけの "update" のようなメソッドを使用した方が便利な場合があります。combine_firstはより一般的であり、結果がいずれかの入力とは異なるサイズになる可能性があります (インデックスが結合されるため)。

https://github.com/pydata/pandas/issues/961

于 2012-03-23T21:45:21.380 に答える