注:実例。予測に嫌われてはいけません。私はそれについて助言する必要はありません。これは厳密にパンダのハウツーの質問です。Pandas Concat列の末尾に異なるサイズのデータフレーム
例 - ワンのソリューション
私は2つの異なるサイズのデータフレーム、予測を表す売上と1を表す1つを持っています。
sales = pd.DataFrame({'sales':[5,3,5,6,4,4,5,6,7,5]})
forecast = pd.DataFrame({'forecast':[5,5.5,6,5]})
予想は、売上番号[5,6,7、5]のリストの最後にある最新の売上である必要があります。他の時間に、私は他の場所でそれが欲しいかもしれません(理由を聞かないでください、私はちょうどこの方法が必要です)。
これは動作します:
df = pd.concat([sales, forecast], ignore_index=True, axis=1)
df.columns = ['sales', 'forecast'] # Not necessary, making next command pretty
df.forecast = df.forecast.shift(len(sales) - len(forecast))
これは私に望ましい結果得られます
を私が知りたいのは何問
がある:私はに連結することができます追加のシフトを実行せずに販売データの末尾(最後のコマンド)?私は2つではなく1つのステップでこれをやりたいと思います。コンカットなどは問題ありませんが、私はシフトをスキップしたいと思います。
私は2行のコードを抱いていません。大丈夫。可能な限り最高のパフォーマンスを備えたソリューションが欲しい。私のアプリケーションは、膨大な量のため、毎ミリ秒に敏感です。それははるかに高速ですが、あなたが行うことができれば
pd.concat([sales、forecast.set_axis(sales.index [-len(forecast):]、inplace = False)]、1) 'のようにします。私は私の答えを削除しました – Dark
@ダーク:ありがとう、私はそれを追加しました。 – Cleb
印象深い!私は、この操作で販売DFのインデックスを予測インデックスにコピーするのが好きです。私が最初にやったより多くの記述が必要な人のために、この例のforecast.shapeは、(4,1) - 4行、1列のタプルを与えます。 -forecast.shape [0]はタプルの4つの部分を取得し、負の値はDFで後方に移動します。したがって、販売インデックスの最後の4行が得られ、予測インデックスは販売DFの終了時と同じインデックスになります。 Concatはインデックスと結婚します。ありがとう@クレブ。とても素敵な仕事。 –