我对pandas数据框很陌生,在连接两个表时遇到了一些麻烦。
第一个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
第二个具有完全相同的两列(以及许多其他列):
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
因此,我希望看到DF2,并补充了“ position”列:
item_id document_id position col1 col2 col3 ...
用pandas做这件事的好方法是什么?
谢谢!
我认为您需要merge使用默认inner联接,但是在两列中都没有重复的值组合是必要的:
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以下栏位中输入:
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