Shu*_*m R 16 python mapping dataframe pandas
我有一个数据帧
id store address
1 100 xyz
2 200 qwe
3 300 asd
4 400 zxc
5 500 bnm
Run Code Online (Sandbox Code Playgroud)
我有另一个数据帧df2
serialNo store_code warehouse
1 300 Land
2 500 Sea
3 100 Land
4 200 Sea
5 400 Land
Run Code Online (Sandbox Code Playgroud)
我希望我的最终数据框看起来像:
id store address warehouse
1 100 xyz Land
2 200 qwe Sea
3 300 asd Land
4 400 zxc Land
5 500 bnm Sea
Run Code Online (Sandbox Code Playgroud)
即从一个数据帧映射到另一个数据帧创建新列
cs9*_*s95 19
df.mergeout = (df1.merge(df2, left_on='store', right_on='store_code')
.reindex(columns=['id', 'store', 'address', 'warehouse']))
print(out)
id store address warehouse
0 1 100 xyz Land
1 2 200 qwe Sea
2 3 300 asd Land
3 4 400 zxc Land
4 5 500 bnm Sea
Run Code Online (Sandbox Code Playgroud)
pd.concat + df.sort_valuesu = df1.sort_values('store')
v = df2.sort_values('store_code')[['warehouse']].reset_index(drop=1)
out = pd.concat([u, v], 1)
print(out)
id store address warehouse
0 1 100 xyz Land
1 2 200 qwe Sea
2 3 300 asd Land
3 4 400 zxc Land
4 5 500 bnm Sea
Run Code Online (Sandbox Code Playgroud)
假设您的数据帧已经排序store,第一次排序调用是多余的,在这种情况下您可以删除它.
df.replace/df.maps = df1.store.replace(df2.set_index('store_code')['warehouse'])
print(s)
0 Land
1 Sea
2 Land
3 Land
4 Sea
df1['warehouse'] = s
print(df1)
id store address warehouse
0 1 100 xyz Land
1 2 200 qwe Sea
2 3 300 asd Land
3 4 400 zxc Land
4 5 500 bnm Sea
Run Code Online (Sandbox Code Playgroud)
或者,显式创建映射.如果您想稍后使用它,则此方法有效.
mapping = dict(df2[['store_code', 'warehouse']].values)
df1['warehouse'] = df1.store.map(mapping)
print(df1)
id store address warehouse
0 1 100 xyz Land
1 2 200 qwe Sea
2 3 300 asd Land
3 4 400 zxc Land
4 5 500 bnm Sea
Run Code Online (Sandbox Code Playgroud)
df1['warehouse'] = df1['store'].map(df2.set_index('store_code')['warehouse'])
print (df1)
id store address warehouse
0 1 100 xyz Land
1 2 200 qwe Sea
2 3 300 asd Land
3 4 400 zxc Land
4 5 500 bnm Sea
Run Code Online (Sandbox Code Playgroud)
df1 = df1.join(df2.set_index('store_code'), on=['store']).drop('serialNo', 1)
print (df1)
id store address warehouse
0 1 100 xyz Land
1 2 200 qwe Sea
2 3 300 asd Land
3 4 400 zxc Land
4 5 500 bnm Sea
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12871 次 |
| 最近记录: |