私には次の問題があります:2つのpandas共通の値を持つ行と列、および異なる値を持ついくつかの異なる長さのデータフレームがあります。
df1: df2:
Column1 Column2 Column3 ColumnA ColumnB ColumnC
0 a x x 0 c y y
1 c x x 1 e z z
2 e x x 2 a s s
3 d x x 3 d f f
4 h x x
5 k x x
ここでやりたいことは、2つのデータフレームをマージして、ColumnAとColumn1の値が同じ場合、df2の行がdf1の対応する行に追加されるようにすることです。
df1:
Column1 Column2 Column3 ColumnB ColumnC
0 a x x s s
1 c x x y y
2 e x x z z
3 d x x f f
4 h x x NaN NaN
5 k x x NaN NaN
私はマージが可能であることを知っています
df1.merge(df2,left_on='Column1', right_on='ColumnA')
ただし、このコマンドは、両方のファイルのColumn1とColumnAで同じではないすべての行を削除します。その代わりに、上記のように、これらの行をdf1に保持し、他の行がdf2からの値を持つ列でNaNを割り当てるだけです。パンダでこれを行うスムーズな方法はありますか?
前もって感謝します!
ここでドキュメントを読むことができます: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html
探しているのは左結合です。デフォルトのオプションは内部結合です。別のhow引数を渡すことにより、この動作を変更できます。
df1.merge(df2,how='left', left_on='Column1', right_on='ColumnA')
左結合のようなものを探しているようです。この例が役立つかどうかを確認してください: http://pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html#left-outer-join
基本的に_how='left'
_というmerge()
にパラメータを渡すことができます