繁体   English   中英

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

[英]Python - function similar to 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

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

我想你可以使用insertmap通过Series与创建df2 (如果在列中的某些值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

我总是发现merge是一种简单的方法:

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

但是,我必须承认,如果您想要将新列称为“MAKE”,那么它就不会那么简短。

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

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

join方法与VLOOKUP的行为非常相似。 它将第一个数据帧中的列与第二个数据帧的索引连接起来,因此您必须将MODEL设置为第二个数据帧中的索引,并且只获取MAKE列。

df.join(df1.set_index('MODEL')['MAKE'], on='MODEL')

看一下连接文档,因为它实际上使用了VLOOKUP这个词。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM