私はpandas dataframesにかなり慣れていないので、2つのテーブルを結合する際にいくつかの問題を経験しています。
最初のdfには3列しかありません。
DF1:
item_id position document_id
336 1 10
337 2 10
338 3 10
1001 1 11
1002 2 11
1003 3 11
38 10 146
2番目の列にはまったく同じ2つの列があります(他の列もたくさんあります)。
DF2
item_id document_id col1 col2 col3 ...
337 10 ... ... ...
1002 11 ... ... ...
1003 11 ... ... ...
必要なのは、SQLで次のように見える操作を実行することです。
DF1 join DF2 on
DF1.document_id = DF2.document_id
and
DF1.item_id = DF2.item_id
そして、結果として、列 'position'で補完されたDF2を見たいです:
item_id document_id position col1 col2 col3 ...
パンダを使用してこれを行う良い方法は何ですか?
ありがとうございました!
デフォルトのmerge
結合で inner
が必要だと思いますが、両方の列の値の重複した組み合わせは必要ありません。
print (df2)
item_id document_id col1 col2 col3
0 337 10 s 4 7
1 1002 11 d 5 8
2 1003 11 f 7 0
df = pd.merge(df1, df2, on=['document_id','item_id'])
print (df)
item_id position document_id col1 col2 col3
0 337 2 10 s 4 7
1 1002 2 11 d 5 8
2 1003 3 11 f 7 0
ただし、必要に応じて、position
列の位置3
:
df = pd.merge(df2, df1, on=['document_id','item_id'])
cols = df.columns.tolist()
df = df[cols[:2] + cols[-1:] + cols[2:-1]]
print (df)
item_id document_id position col1 col2 col3
0 337 10 2 s 4 7
1 1002 11 2 d 5 8
2 1003 11 3 f 7 0