df.merge
out = (df1.merge(df2, left_on='store', right_on='store_pre') .reindex(columns=['id', 'store', 'address', 'warehouse']))print(out) id store address warehouse0 1 100 xyz Land1 2 200 qwe Sea2 3 300 asd Land3 4 400 zxc Land4 5 500 bnm Sea
pd.concat
+ df.sort_values
u = df1.sort_values('store')v = df2.sort_values('store_pre')[['warehouse']].reset_index(drop=1)out = pd.concat([u, v], 1)print(out) id store address warehouse0 1 100 xyz Land1 2 200 qwe Sea2 3 300 asd Land3 4 400 zxc Land4 5 500 bnm Sea假设您的数据框已经在上排序
store,则第一次排序调用是多余的,在这种情况下,您可以删除它。
df.replace
/df.map
s = df1.store.replace(df2.set_index('store_pre')['warehouse'])print(s) 0 Land1 Sea2 Land3 Land4 Seadf1['warehouse'] = sprint(df1) id store address warehouse0 1 100 xyz Land1 2 200 qwe Sea2 3 300 asd Land3 4 400 zxc Land4 5 500 bnm Sea或者,显式创建映射。如果您以后要使用它,它将起作用。
mapping = dict(df2[['store_pre', 'warehouse']].values)df1['warehouse'] = df1.store.map(mapping)print(df1) id store address warehouse0 1 100 xyz Land1 2 200 qwe Sea2 3 300 asd Land3 4 400 zxc Land4 5 500 bnm Sea



