Python - 类似于 VLOOKUP (Excel) 的功能

新手上路,请多包涵

我正在尝试加入两个数据框,但无法理解 Python 必须提供的可能性。

第一个数据框:

 ID MODEL   REQUESTS ORDERS
1  Golf    123      4
2  Passat  34       5
3  Model 3 500      8
4  M3      5        0

第二个数据框:

 MODEL   TYPE  MAKE
Golf    Sedan Volkswagen
M3      Coupe BMW
Model 3 Sedan Tesla

我想要的是在第一个名为“make”的数据框中添加另一列,使其看起来像这样:

 ID MODEL   MAKE       REQUESTS ORDERS
1  Golf    Volkswagen 123      4
2  Passat  Volkswagen 34       5
3  Model 3 Tesla      500      8
4  M3      BMW        5        0

我已经查看了合并、连接和映射,但所有示例都只是在数据框的末尾附加了所需的信息。

原文由 Christian 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 579
2 个回答

I think you can use insert with map by Series created with df2 (if some value in column MODELdf2 中缺少 get NaN ):

 df1.insert(2, 'MAKE', df1['MODEL'].map(df2.set_index('MODEL')['MAKE']))
print (df1)
   ID    MODEL        MAKE  REQUESTS  ORDERS
0   1     Golf  Volkswagen       123       4
1   2   Passat         NaN        34       5
2   3  Model 3       Tesla       500       8
3   4       M3         BMW         5       0

原文由 jezrael 发布,翻译遵循 CC BY-SA 3.0 许可协议

虽然不是在这种情况下,但可能存在 df2 有两列以上的情况,您只想根据特定列作为键将其中的一列添加到 df1。这是您可能会发现有用的通用代码。

 df = pd.merge(df1, df2[['MODEL', 'MAKE']], on = 'MODEL', how = 'left')

原文由 Bhagabat Behera 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题