Сначала вам нужно преобразовать size
столбец из table1
в str
, поскольку size
in table2
также является строковым столбцом:
In [40]: table1['size'] = table1['size'].astype(str)
Затем вы можете присоединиться к ним следующим образом: это:
In [44]: table3 = pd.merge(table2, table1, on=['name', 'size'], how='left').drop(['Unnamed: 3', 'id_x'], 1).rename(columns={'id_y': 'id'})
In [45]: table3
Out[45]:
name size country host id color
0 shoes 42 usa man 1.0 black
1 shoes 44 rus woman 2.0 black
2 jacket 44 eu man 3.0 brown
3 shoes 46 usa woman NaN NaN
4 shoes 42 rus man 1.0 black
5 hat m eu woman NaN NaN