为了账号安全,请及时绑定邮箱和手机立即绑定

如果它们之间匹配,如何从第二个 df 获取项目

如果它们之间匹配,如何从第二个 df 获取项目

守着星空守着你 2021-08-05 16:46:13
可能这个问题已经有了答案,但我找不到任何答案。如果两个数据帧之间存在匹配,我想从第二个数据帧中获取要附加到第一个数据帧中的新列的项目在这里,我展示了一些与我面临的案例非常相似的示例数据。import pandas as pdimport numpy as npa = np.arange(3).repeat(3)b = np.tile(np.arange(3),3)df1 = pd.DataFrame({'a':a, 'b':b})    a   b0   0   01   0   12   0   23   1   04   1   15   1   26   2   07   2   18   2   2a2 = np.arange(1, 4).repeat(3)b2 = np.tile(np.arange(3),3)c = np.random.randint(0, 10, size=a2.size)df2 = pd.DataFrame({'a2':a2, 'b2':b2, 'c':c})  a2    b2  c0   1   0   31   1   1   12   1   2   93   2   0   54   2   1   85   2   2   46   3   0   17   3   1   68   3   2   1所需的输出应该是    a   b  c0   0   0 nan1   0   1 nan2   0   2 nan3   1   0 34   1   1 15   1   2 96   2   0 57   2   1 88   2   2 4不幸的是,我无论如何都想不出解决它。
查看完整描述

1 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

merge与左连接一起使用并重命名列名称:


df = df1.merge(df2.rename(columns={'a2':'a', 'b2':'b'}), on=['a','b'], how='left')

print (df)

   a  b    c

0  0  0  NaN

1  0  1  NaN

2  0  2  NaN

3  1  0  3.0

4  1  1  5.0

5  1  2  0.0

6  2  0  2.0

7  2  1  6.0

8  2  2  2.0


查看完整回答
反对 回复 2021-08-05
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号