您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 将列从一个数据框映射到另一个数据框以创建新列

5b51 2022/1/14 8:21:30 python 字数 3745 阅读 502 来源 www.jb51.cc/python

我有一个数据帧id store address 1 100 xyz 2 200 qwe 3 300 asd 4 400 zxc 5 500 bnm 我有另一个数据帧df2serialNo store_code warehouse 1

概述

我有一个数据帧

id  store    address
1    100        xyz
2    200        qwe
3    300        asd
4    400        zxc
5    500        bnm

我有一个数据帧df2

serialNo    store_code  warehouse
    1          300         Land
    2          500         Sea
    3          100         Land
    4          200         Sea
    5          400         Land

我希望我的最终数据框看起来像:

id  store    address  warehouse
1    100        xyz     Land
2    200        qwe     Sea
3    300        asd     Land
4    400        zxc     Land
5    500        bnm     Sea

即从一个数据帧映射到另一个数据帧创建新列

out = df1.merge(df2,left_on='store',right_on='store_code')\
                       [['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

pd.concat df.sort_values

out = pd.concat([df1.sort_values('store'),\
       df2.sort_values('store_code')[['warehouse']].reset_index(drop=1)],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

假设您的数据帧已经在商店中排序,第一个排序调用是多余的,在这种情况下您可以将其删除.

df.replace

s = 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

或者,显式创建映射.如果您想稍后使用它,则此方法有效.

mapping = dict(df2[['store_code','warehouse']].values) # separate step
df1['warehouse'] = df1.store.replace(mapping) # 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

总结

以上是编程之家为你收集整理的python – 将列从一个数据框映射到另一个数据框以创建新列全部内容,希望文章能够帮你解决python – 将列从一个数据框映射到另一个数据框以创建新列所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶